Почему постинкремент адресного регистра равен (A0)+

В основном на языке ассемблера 68000 для постинкремента адресного регистра вам нужно сделать:

(A0)+

Пример

MOVE (A0)+,D0

Это переместит в D0 значение, указанное по адресу A0, а также увеличит A0 на 1.

Учитывая, что (A0) — это значение, на которое указывает A0, было бы не лучше, если бы синтаксис постинкремента был таким:

(A0+)

? Или я что-то упускаю?


person dynamic    schedule 26.05.2012    source источник


Ответы (1)


MOVE.L (A1)+,D0 ; increments A1 by 4, because it is long operation
                ; and 4 is size of long

Я думаю, что текущий синтаксис постинкремента указывает на эту функцию, в то время как (A1+) больше предполагает, что A1 всегда увеличивается на единицу.

См.: Косвенная адресация с постинкрементом

person Ruben    schedule 26.05.2012
comment
+ внутри предполагает, что он предварительно увеличен. - person Jens Björnhager; 26.05.2012
comment
@JensBjörnhager Но синтаксис предварительного декремента такой же, - (A0), так что это не могло быть намерением. Пре- и пост различаются по положению оператора. - person Gunther Piez; 05.01.2015