0
因此,我是ARM彙編程序的初學者。 「!你好,世界」 我試圖返回的長度,因此它必須是13.這是我的源代碼:當我想在樹莓派的ARM彙編程序中返回字符串長度時獲取段錯誤
.section .rodata
.align 2
message:
.string "Hello, world!"
afficher:
.string "%d"
.text
.align 2
.global main
long:
stmfd sp!, {lr}
ldrb r2, [r0]
cmp r2, #0
beq out
add r1,r1,#1
add r0,r0, #1
bl long
ldmfd sp!, {lr}
bx lr
.global main
main:
stmfd sp!, {lr}
ldr r0, =message
mov r1, #0
bl long
ldmfd sp!, {lr}
bx lr
out :
ldr r6, =message
bl printf
mov r0, r1
ldr r3, =afficher
mov r4, r1
mov r5, r0
bl printf
.global main
我不知道在哪裏誠實的問題。任何人都可以幫助我嗎?!感謝名單
Wowzers,我從來沒有見過'strlen'實現_recursively_之前......無論如何,首先要在調試器下運行它以找到_where_ segfault發生,以及被訪問的地址是否顯然是無意義的(建議數據腐敗)或接近合理的東西(暗示某種超限)。 – Notlikethat
你確定你的字符串是0終止的嗎? – JimmyB
是的,它是0終止的。我試圖在主標籤中調用printf,但是我仍然有段錯誤 – Adil