私は非常に単純な問題を抱えていますが、それが私を壁に押し上げています。助けていただけますか?
質問は次のとおりです。ARM アセンブリで 2 つの符号付きバイト値を比較するにはどうすればよいですか? これは私が試したものです:
ldrsb r1, [r0], #1
ldrsb r2, [r0]
cmp r1, r2
r0 には、10、-1、123 などのバイト値のリストのアドレスがロードされます。迷っています
編集:
さて、符号付きバイト値のリストを (bubblesort を使用して) ソートするプログラムを作成することになっています。私はそれを行う方法を理解できますが、実際の比較 (またはその結果) を理解していないだけです。これまでの私のコードは次のとおりです。
.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 ハードウェアではなく、ARM7TDMI プロセッサのシミュレータである ARMSim# で実行していることを付け加えておく必要があるかもしれません: http://armsim.cs.uvic.ca/index.html