Что означает # в сборке?

Например, в чем разница между MOVE 8,D2 и MOVE #8,D2? Просто интересно, что символизирует # и что будет без него.

3 ответа

В сборке 68k знак # обозначает непосредственные константы. Все остальное обычно считается адресом:

move.w #6,d0

загрузит постоянное непосредственное значение 6 в регистр d0, а

move.w 6,d0

будет делать что-то совершенно другое: оно будет извлекать слово с постоянным адресом 6 в регистр d0

В GNU AS, если вы используете # перед чем-либо еще в данной строке, строка будет игнорироваться (комментарий). Если использовать # перед значением после инструкции, значение будет считаться немедленным. Если вы хотите использовать встроенные комментарии в этой точке на одной и той же строке, вы должны использовать комментарии в стиле C (т.е. /* здесь комментарии */). Например:

# Write the palette to CRAM
lea Palette, a0                 /* Move palette address to a0 */
move.w #size_palette_w-1, d0    /* Loop counter = 8 words in palette */

Означает следующее число вместо регистра.

Обычно в ARM и OP код означает немедленную константу, но в других типах ассемблера этот символ отличается, например # такой же, как $ в x86.

Другие вопросы по тегам