定義済み.byteの値をレジスタに正しくロードするにはどうすればよいですか?例えば定数として定義して:初心者のARMアセンブリ質問
constant: .byte 'a'
私がしようとしています:
ldr r0, =constant
ldr r1, [r0]
はしかし、シミュレータは、二行目の後に停止し、エラー「非整列メモリロケーションへのアクセス、不正なアドレス」の残りの部分を与えます2番目の行が含まれていない限り、コードは正常に実行されます。
全コード:
; r0 is a pointer to msg1
; r1 used to store the value of val
; r2 used to compare a character in msg1
; r3 counter for the number of comparisons
.text
.global _start
_start:
ldr r0, =msg
ldr r1, =val
ldr r1, [r1]
mov r3, #0
loop: ldr r2, [r0]
cmp r2, #0
beq done
cmp r0, r1
add r0, r0, #4
bne loop
add r2, r2, #1
b loop
done:
swi 0x11
.data
.align
msg: .asciz "How many 'a's are in this string?"
val: .byte 'a'
.end
の中にあります。 "バイトアライメントされたポインタ" - 他の種類はありますか? :) –
@Michael Burr、私は、より限定的なアラインメントを持つポインタとは対照的に意味しました。 –