Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 理解ARM汇编代码_Assembly_Arm - Fatal编程技术网

Assembly 理解ARM汇编代码

Assembly 理解ARM汇编代码,assembly,arm,Assembly,Arm,有人能给我解释一下这个简短的节目是做什么的吗 ORIGIN 0x1000 one DEFW 13 two DEFW 29 three DEFW 0 ORIGIN 0x1010 ENTRY ADR R0, one LDR R1, [R0] LDR R2, [R0, #4] ADD R1, R2, R1 STR R1, [R0, #8] SWI 2 如果我的想法正确,它会将“一”添加到“二”,并将结果放在“三”中。我说的对吗?是的 ORIGIN 0x1000 # Start at

有人能给我解释一下这个简短的节目是做什么的吗

ORIGIN 0x1000
one DEFW 13
two DEFW 29
three DEFW 0
ORIGIN 0x1010
ENTRY
ADR R0, one
LDR R1, [R0]
LDR R2, [R0, #4]
ADD R1, R2, R1
STR R1, [R0, #8]
SWI 2
如果我的想法正确,它会将“一”添加到“二”,并将结果放在“三”中。我说的对吗?

是的

ORIGIN 0x1000          # Start at address 0x1000
one DEFW 13            # Allocate 4-bytes of space for a variable called one and set it to 13
two DEFW 29            # Allocate 4-bytes of space for a variable called two and set it to 29
three DEFW 0           # Allocate 4-bytes of space for a variable called three and set it to 0
ORIGIN 0x1010          # Skip ahead to address 0x1010 (this really leaves a 4-byte gap)
ENTRY                  # Mark next instruction as the begining of program
ADR R0, one            # Load address of one into R0
LDR R1, [R0]           # Load contents of one (pointed to but R0) into R1
LDR R2, [R0, #4]       # Load contents of two (pointed to but R0 + 4) into R2
ADD R1, R2, R1         # R1 = R2 + R1
STR R1, [R0, #8]       # Store R1 into three  (pointed to but R0 + 8)
SWI 2                  # Execute a software interrupt


不确定“SWI 2”可能是特定于您的平台。可能只是一个通用的程序结束调用。

+1:似乎表明
SWI 2
将打印到某种调试流(至少在该系统上)。在某些ARM系统上,SWI代表“软件中断”。SWI是软件中断指令。正如@Pete Fordham所说,什么是SWI 2取决于平台。这是家庭作业吗?你为什么把它弄糊涂了?如果你这样做,对别人没用。
three = one + two