Значение инструкции по сборке ARM # (2 * 4) - PullRequest
0 голосов
/ 30 ноября 2018

Во время сеанса GDB я натолкнулся на инструкцию по сборке, которая выглядит следующим образом

mov r0, #(2*4)

Как я понимаю, # является буквальным, он предполагает предоставление константы вместо операции.Я правильно понимаю?

ps Как я понимаю, это присвоение 8 для регистра r0, я прав?

1 Ответ

0 голосов
/ 30 ноября 2018

понимают, что язык ассемблера определяется ассемблером, инструментом, поэтому, если он вообще поддерживается, он зависит от инструмента, при условии, что он поддерживается, он выглядит как постоянный / немедленный.

mov r0,#(2*4)

собрать, затем разобрать

arm-none-eabi-as so.s -o so.o
arm-none-eabi-objdump -D so.o

so.o:     file format elf32-littlearm


Disassembly of section .text:

00000000 <.text>:
   0:   e3a00008    mov r0, #8

так что для этой версии ассемблера gnu да, это именно так.иногда, когда вы видите такой синтаксис, что это не настоящая сборка (например, использование #defines), и вам необходимо запустить его через препроцессор gcc

arm-none-eabi-gcc -c so.s -o so.o
arm-none-eabi-objdump -D so.o

so.o:     file format elf32-littlearm


Disassembly of section .text:

00000000 <.text>:
   0:   e3a00008    mov r0, #8

в этом случае не требуется, для этой версии ассемблера gnu срука цель.

...