簡體   English   中英

匯編語言中的簡單代碼

[英]simple codes in assembly language

我是使用Raspberry Pi的匯編語言的新手。 我試圖在Raspberry Pi 3(ARM 8086)上運行此簡單程序。 它不會引起錯誤,但是當我嘗試在編譯並as _o example.o example.sgcc _o example examle.s./example運行時在終端中查看結果時。 執行結果是分割錯誤,能幫我嗎?

.align 2
    .text
    .global main
main:
    stmfd r13!, {r14}

    mov r0,#1
    bl print

    mov r0,#2
    bl print

    mov r0,#3
    bl print

    ldmfd r13!,{pc} @ return to OS

print:
    stmfd r13!, {r0-r3,r12,r14}
    mov r1,r0
    ldr r0, =num_str
    bl printf
    ldmfd r13!, {r0-r3,r12,pc}

.data

    .align 2
num_str:
    .asciz “%d\n”
.end

ABI要求堆棧指針與8個字節的倍數對齊,您的main函數將堆棧指針減4,使其不對齊。 大概printf使用一條要求8字節對齊的指令。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM