2013-06-10 3 views
2

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

movl (%eax), %ebx 

movl %eax, (%ebx) 

Вот аналогичный вопрос, который объясняет о memory indirect addressing

Это то, что я понял:

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

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

+1

Вы правы. В C это будет 'ebx = * eax' и' * ebx = eax'. – ShinTakezou

ответ

3

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

movl source, destination 

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

Итак, ваше понимание верно.

+0

Спасибо !. Теперь можно взглянуть на следующую часть кода с лучшим настроением! – pistal

Смежные вопросы