Я изучил некоторые 68k/Coldfire в Uni, и мне было трудно понять более сложные режимы адресации (с числами рядом со скобками разыменования).
Я думаю, что пример здесь лучший:
A) lea:
A1) lea $5(a1,a2.l), a0
A2) lea -1(a1,a2), a0
B) move:
B1) move.b 1(a1),d0
B2) move.b -2(a1),d0
Может ли кто-нибудь объяснить мне простыми словами, что происходит в каждой инструкции?
Если необходимо, уточните подробности (инкременты до/после и т. д.).
Спасибо!! ;)
Инструкции по рекламе:
Как следует из названия инструкции lea, она используется для загрузки адреса в адресный регистр. Он не будет перемещать данные с косвенной адресации. Я не проверял, действительны ли эти инструкции, и мои навыки 68k сейчас довольно ржавые, поэтому я предполагаю, что они есть. Отсутствие указания ширины индексного регистра в A2 приводит к неоднозначности. С самого начала я не могу вспомнить, была ли здесь ширина регистра по умолчанию .W или .L, поэтому указать это может быть хорошей идеей.
Инструкции по перемещению рекламы:
Для полноты, режимы адресации:
В Coldfire нет необходимости указывать ширину индексного регистра — здесь индексный регистр всегда .l
— также поддерживается ширина слова 68k.
do
не является регистрационным именем. Я предполагаю, что вы имели в видуd0
, поэтому я исправил это при форматировании. В вашем втором LEA не указан операнд назначения, поэтому я предположил, что это должно бытьa0
. Вы спрашиваете здесь о 68000 или о Coldfire, или о том и другом? (Если это имеет значение, я мало что знаю о Coldfire.)