我有一个非常简单的问题,但它把我逼到了墙角,你能帮帮我吗?
这是一个问题:如何比较 ARM 汇编中的两个有符号字节值?这是我尝试过的:
ldrsb r1, [r0], #1
ldrsb r2, [r0]
cmp r1, r2
r0 加载了字节值列表的地址,例如 10、-1、123。加载负数时,ldrsb 是否应该不 sig 扩展?我搞不清楚了
编辑:
好吧,我们应该编写一个对有符号字节值列表进行排序的程序(使用冒泡排序)。我可以弄清楚如何做到这一点,只是我不了解实际的比较(或其结果)。到目前为止,这是我的代码:
.global main
.section .data
myNumbers: .byte 183, 374, -113, -1, 10, 101, -3, -54, 9, 7
myNumbersEnd:
.section .text
main:
loop:
mov r4, #0
ldr r0, =myNumbers
ldr r3, =myNumbersEnd
inner_loop:
ldrsb r1, [r0], #1
ldrsb r2, [r0]
cmp r1, r2
strgtb r1, [r0]
strgtb r2, [r0, #-1]
movgt r4, #1 @ r4 = swapped = true
cmp r0, r3
bne inner_loop
cmp r4, #1
beq loop @ keep going
exit:
b exit
.end
也许我应该补充一点,我不是在实际的 ARM 硬件上运行此代码,而是在 ARMSim#(ARM7TDMI 处理器的模拟器)上运行此代码:http: //armsim.cs.uvic.ca/index.html