Добавил:
ИВТ (советую зайти в "Несортированное") Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
1
Добавлен:
23.11.2024
Размер:
575.96 Кб
Скачать

МИЭТ, СПИНТех, КАИ

Команды, упоминаемые на прошедших лекциях

1 / 18

Команды, упоминаемые на прошедших лекциях (основной набор+FPU)

Александра Игоревна Кононова

МИЭТ

11 сентября 2021 г. актуальную версию можно найти на https://gitlab.com/illinc/arch-cs

Команды пересылки и условия Базовая арифметика (основной набор)

FPU FPU (флаги)

МИЭТ, СПИНТех, КАИ Команды, упоминаемые на прошедших лекциях 2 / 18

Команды пересылки и условия: условные обозначения

1 Источник src (регистр, память или непосредственное значение),

srm (регистр или память),

smem (только память),

sreg (только регистр), imm (непосредственный).

2 Приёмник dest (регистр или память),

dmem (только память), dreg (только регистр).

3Фиксированный размер src8, dest64.

Если мнемоника команды AT&T отличается от приведённой в документации AMD/Intel: первая колонка показывает мнемонику AT&T, вторая мнемонику Intel.

Команды пересылки и условия

Передача и возврат управления

Базовая арифметика (основной набор)

Пересылка данных

FPU

Условные команды

FPU (флаги)

Условия

МИЭТ, СПИНТех, КАИ Команды, упоминаемые на прошедших лекциях 3 / 18

Передача и возврат управления

jmp smem

передача управления (goto smem) smem ! ip

jCC smem

передача управления smem ! ip, если верно CC 2 flags

call smem

вызов подпрограммы

push ip;

smem ! ip

ret

возврат

pop ip

 

ret imm16

возврат с чисткой стека

pop ip;

sp += imm16

Флаги: не изменяются

 

 

: : :

 

 

sp

 

: : :

 

 

 

 

: : :

 

 

 

 

: : :

 

 

sp

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Стек

 

 

 

 

 

 

ci+1

 

 

sp

 

ci+1

 

 

sp

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

: : :

 

 

 

 

: : :

 

 

 

 

: : :

 

 

 

 

: : :

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ret

 

 

 

 

ret

 

 

 

 

ret

 

 

ip

 

ret

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

: : :

 

 

f()

 

: : :

 

 

 

 

: : :

 

 

 

 

: : :

 

 

 

Код

f :

 

 

 

 

f :

 

 

 

ip

f :

 

 

 

 

f :

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

: : :

 

 

 

 

: : :

 

 

 

 

: : :

 

 

 

 

: : :

 

 

 

 

ci+1 :

 

 

 

 

ci+1 :

 

 

 

 

ci+1 :

 

 

 

 

ci+1 :

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ip

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ci :

call f

 

 

ip

ci :

call f

 

 

 

ci :

call f

 

 

 

ci :

call f

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

адреса растут снизу вверх

а)

б)

в)

 

г)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Команды пересылки и условия

Передача и возврат управления

Базовая арифметика (основной набор)

Пересылка данных

 

 

 

 

 

 

 

 

 

 

 

FPU

Условные команды

 

 

 

 

 

 

 

 

 

 

 

FPU (флаги)

Условия

 

 

 

 

 

 

 

 

 

 

МИЭТ, СПИНТех, КАИ

Команды, упоминаемые на прошедших лекциях

4 / 18

Пересылка данных

Пересылка и обмен (размер src и dest совпадает, кроме lea)

mov src, dest

 

src ! dest

 

movabs imm64, dreg64

mov

imm64 ! dreg64

(ABSolute address)

lea smem,

dreg

 

&smem ! dreg

(Load E ective Address)

xchg srm,

dest

 

обмен значений srm

! dest

Условная пересылка cmovCC srm, dreg (не очищает конвейер) слайды 5, 6

Пересылка с изменением размера (jsrmj < 32 бит)

 

movs srm, dreg

movsx

 

srm ! dreg со знаковым (Sign) расширением

 

 

movz srm, dreg

movzx

 

srm ! dreg с беззнаковым (Zero) расширением

 

 

 

 

 

 

 

 

 

movslq srm32, dreg64

 

movsxd

srm32 ! dreg64 со зн-м (Sign) расш-м

 

 

 

Работа со стеком (стековое слово=разрядности режима)

 

 

push src

помещение src в стек:

 

sp = sizeof(src); src ! sp

 

 

pop dest

выталкивание из стека в dest:

sp ! dest; sp += sizeof(dest)

 

 

 

 

 

 

 

Флаги: не изменяются

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Команды пересылки и условия

Передача и возврат управления

 

 

Базовая арифметика (основной набор)

Пересылка данных

 

 

 

 

 

 

 

 

FPU

Условные команды

 

 

 

 

 

 

 

FPU (флаги)

Условия

 

 

 

 

 

 

 

 

 

 

 

 

МИЭТ, СПИНТех, КАИ

Команды, упоминаемые на прошедших лекциях

5 / 18

Условные команды

Условные команды CPU (CC кроме u, nu)

jmp addr

безусловная передача управления (goto addr)

 

addr ! ip

jCC addr

условная передача управления addr ! ip, если

 

CC 2 flags

cmovCC srm, dreg

условная пересылка в регистр CPU srm ! dreg,

 

если CC 2 flags

setCC dest8

условная установка байта

 

1

! dest8; если CC 2 flags

 

0

! dest8; если CC 2= flags

Условная команда FPU (CC e, ne, b/nae, be/na, ae/nb, a/nbe, u, nu) fcmovCC %st(i), %st(0) условная пересылка в регистр FPU

%st(i) ! %st(0), если CC 2 flags

Флаги: не изменяются

Команды пересылки и условия

Передача и возврат управления

Базовая арифметика (основной набор)

Пересылка данных

FPU

Условные команды

FPU (флаги)

Условия

CC

Флаги

Результат сл/выч

 

sub/cmp src, dest

and/test src, dest

fucomi %st(i), %st(0)

e/z

ZF = 1

= 0

dest src = 0

 

dest & src = 0

st(0) src = 0

ne/nz

ZF = 0

6= 0

dest src

6= 0

 

 

dest & src 6= 0

st(0) src 6= 0

c/b/nae

CF = 1

перенос

dest src < 0

 

как беззнаковое

никогда

st(0) src < 0

 

CF = 1

 

 

 

dest src 6 0

 

 

st(0) src 6 0

na/be

ZF = 1

 

 

 

dest & src = 0

nc/nb/ae

CF = 0

нет переноса

dest src > 0

всегда

st(0) src > 0

 

CF = 0

 

 

 

 

 

 

 

 

 

 

 

a/nbe

ZF = 0

 

 

 

dest src > 0

dest & src 6= 0

st(0) src > 0

s

SF = 1

старший (знаковый) бит равен 1

 

ns

SF = 0

старший (знаковый) бит равен 0

 

 

 

 

 

 

 

 

 

o

OF = 1

знаковое переполнение

 

 

 

никогда

 

no

OF = 0

нет знакового переполнения

 

всегда

 

 

 

 

 

 

 

 

l/nge

SF 6= OF

< 0

dest src < 0

знаковое

никогда

?

le/ng

SF 6= OF

 

6

0

dest

 

src

6

0

 

dest & src = 0

 

 

ZF = 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

nl/ge

SF = OF

> 0

dest src > 0

 

всегда

 

как

 

 

SF = OF

 

 

 

dest src > 0

dest & src 6= 0

 

nle/g

ZF = 0

> 0

 

 

p/pe/u

P F = 1

число единиц младшего байта чётно

nan

np/po/nu

P F = 0

число единиц младшего байта нечётно

числа

только jCC, cmovCC, setCC / все условные команды / только fcmovCC

Соседние файлы в папке АВС