Что означает # в сборке?
Например, в чем разница между 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.