Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.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下的ASM-指令mov_Assembly_Arm_Mov - Fatal编程技术网

Assembly ARM下的ASM-指令mov

Assembly ARM下的ASM-指令mov,assembly,arm,mov,Assembly,Arm,Mov,我是ASM语言的高手,我想知道如何将值-1894025488设置为寄存器r0 如果值为“10”,则它是正确的 mov r0, #10 十六进制->0A00A0E3 但是,如果该值大于“1024”as“-1894025488”,则无法转换为十六进制 mov r0, #-1894025488 十六进制->我不能用十六进制转换 你能帮我吗?你需要仔细阅读arm文档中的arm说明,从这一点上看应该很明显 首先,如果你有一台电脑,你可以将数字转换成十六进制,但不一定需要 有三种主要的arm指令集,ar

我是ASM语言的高手,我想知道如何将值-1894025488设置为寄存器
r0

如果值为“10”,则它是正确的

mov r0, #10
十六进制->0A00A0E3

但是,如果该值大于“1024”as“-1894025488”,则无法转换为十六进制

mov r0, #-1894025488
十六进制->我不能用十六进制转换


你能帮我吗?

你需要仔细阅读arm文档中的arm说明,从这一点上看应该很明显

首先,如果你有一台电脑,你可以将数字转换成十六进制,但不一定需要

有三种主要的arm指令集,arm、thumb和arm的thumb2扩展(具有mov的扩展)。每种方法都有不同的立即值规则。如果您考虑一下,您希望将0x8F1B76f0加载到寄存器中,这显然是一个32位的数字,大部分不是1或0。arm指令为32位,thumb指令为16或16+16(32)。不可能把32位的立即数加上一些操作码位放进去,说这是一个mov和什么寄存器,并把它们全部放进32位,不能把32+N位压缩到32位,所以就像MIPS一样,你必须做些别的事情。arm的解决方案是利用桶形移位器,这样您就有大约8个有效位,并且可以将它们移位到不同的位置。例如,通过arm指令,您可以

mov r0,#0x86000000
因为非零位在一组8(10000110…)内,可以四处移位。用拇指,虽然我不认为它的工作方式,但不确定

有一条捷径

ldr r0,=0x8F1B76f0
这显然是为了让汇编器从标签名中填写地址,但您可以作弊并在其中输入值

但所做的只是让汇编程序生成一个pc相对负载

ldr r0,temp
...
temp : .word 0x8F1B76f0

因此,这是始终能够加载任何常量的正确方法,并且所有三个指令集都支持pc相对字大小的加载。

截止值不是
1024
。要加载任意数字,您可以使用
ldr,=number
表单(请参阅)。注意,对于不能直接编码的值,这将使用一个文本池。ldr r0,=10是正确的ldr r0,=-1894025488是错误的我没有找到haxa转换器没有一个单独的机器代码,因为它取决于常量在文本池中的位置。阅读我链接的文档,看看它会被翻译成
LDR-rn,[pc,#offset to literal pool]
你能帮我一个例子吗?如果我理解,我必须做:ldr r0,&memory,但我可以设置哪条指令&memory=-1894025488“但我可以设置哪条指令&memory=-1894025488”,这不是任何指令都能完成的。汇编程序将值-1894025488放在a中,然后可以使用PC相对的
LDR
(对于它,
LDR reg,=immediate
是语法糖),Jester已经解释过了。