如何使用 MOV 或 MVN 在 arm 中存储有符号数?
How to store signed numbers in arm using MOV or MVN?
我正在尝试学习 ARM 汇编,我想在寄存器中存储一个带符号的数字,它必须类似于 -
MOV R0, #-10
但是这会正常存储数字,而不是作为带符号的数字。我尝试使用 LDRSB
作为 -
LDRSB R0, =0x0000000A
,但它给了我错误。
汇编语言是特定于汇编器的。您指的是 arm7 还是 armv7?
这是 gnu 汇编器
mov r0,#-10
ldr r0,=-10
.thumb
mov r0,#-10
ldr r0,=-10
.syntax unified
mov r0,#-10
ldr r0,=-10
so.s: Assembler messages:
so.s:12: Error: cannot honor width suffix -- `mov r0,#-10'
so.s:7: Error: invalid immediate: -10 is out of range
再试一次
mov r0,#-10
ldr r0,=-10
.thumb
@mov r0,#-10
ldr r0,=-10
.syntax unified
@mov r0,#-10
ldr r0,=-10
00000000 <.text>:
0: e3e00009 mvn r0, #9
4: e3e00009 mvn r0, #9
8: 4800 ldr r0, [pc, #0] ; (c <.text+0xc>)
a: 4800 ldr r0, [pc, #0] ; (c <.text+0xc>)
c: fffffff6 .word 0xfffffff6
那么你当时在看(全尺寸)ARM 吗?
0: e3e00009 mvn r0, #9
4: e3e00009 mvn r0, #9
这是三个中最容易编码的一个。你可以很容易地在 ARM 文档中看到编码。这些工具已经为您完成了一半的工作 (0xfffffff6)。
如果你指的是 armv7 那么
mov r0,#-10
ldr r0,=-10
.thumb
@mov r0,#-10
ldr r0,=-10
.syntax unified
mov r0,#-10
ldr r0,=-10
00000000 <.text>:
0: e3e00009 mvn r0, #9
4: e3e00009 mvn r0, #9
8: f06f 0009 mvn.w r0, #9
c: f06f 0009 mvn.w r0, #9
10: f06f 0009 mvn.w r0, #9
我正在尝试学习 ARM 汇编,我想在寄存器中存储一个带符号的数字,它必须类似于 -
MOV R0, #-10
但是这会正常存储数字,而不是作为带符号的数字。我尝试使用 LDRSB
作为 -
LDRSB R0, =0x0000000A
,但它给了我错误。
汇编语言是特定于汇编器的。您指的是 arm7 还是 armv7?
这是 gnu 汇编器
mov r0,#-10
ldr r0,=-10
.thumb
mov r0,#-10
ldr r0,=-10
.syntax unified
mov r0,#-10
ldr r0,=-10
so.s: Assembler messages:
so.s:12: Error: cannot honor width suffix -- `mov r0,#-10'
so.s:7: Error: invalid immediate: -10 is out of range
再试一次
mov r0,#-10
ldr r0,=-10
.thumb
@mov r0,#-10
ldr r0,=-10
.syntax unified
@mov r0,#-10
ldr r0,=-10
00000000 <.text>:
0: e3e00009 mvn r0, #9
4: e3e00009 mvn r0, #9
8: 4800 ldr r0, [pc, #0] ; (c <.text+0xc>)
a: 4800 ldr r0, [pc, #0] ; (c <.text+0xc>)
c: fffffff6 .word 0xfffffff6
那么你当时在看(全尺寸)ARM 吗?
0: e3e00009 mvn r0, #9
4: e3e00009 mvn r0, #9
这是三个中最容易编码的一个。你可以很容易地在 ARM 文档中看到编码。这些工具已经为您完成了一半的工作 (0xfffffff6)。
如果你指的是 armv7 那么
mov r0,#-10
ldr r0,=-10
.thumb
@mov r0,#-10
ldr r0,=-10
.syntax unified
mov r0,#-10
ldr r0,=-10
00000000 <.text>:
0: e3e00009 mvn r0, #9
4: e3e00009 mvn r0, #9
8: f06f 0009 mvn.w r0, #9
c: f06f 0009 mvn.w r0, #9
10: f06f 0009 mvn.w r0, #9