Косвенная адресация памяти movl - сборка

Я пытаюсь понять, как именно косвенная адресация памяти работает на языке ассемблера с синтаксисом AT&T.

movl (%eax), %ebx

movl %eax, (%ebx)

Вот аналогичный вопрос, который объясняет косвенную адресацию памяти

Вот что я понял:

В первом случае вы load данные, на которые указывает регистр %eax, и сохраняете их в %ebx.

Во втором случае вы store данные в регистре %eax в адресное пространство, на которое указывает регистр %ebx. Я прав?


person pistal    schedule 10.06.2013    source источник
comment
ты прав. В C это будет ebx = *eax и *ebx = eax.   -  person ShinTakezou    schedule 10.06.2013


Ответы (1)


В основном синтаксис

movl source, destination

Итак, movl (%eax), %ebx действительно копирует значение по адресу, указанному% eax, в% ebx. И movl %eax, (%ebx) копирует значение из регистра% eax в адрес, на который указывает% ebx.

Итак, вы действительно правильно поняли.

person dda    schedule 10.06.2013
comment
Спасибо!. Теперь можете лучше взглянуть на следующую часть кода! - person pistal; 10.06.2013