簡體   English   中英

每個匯編代碼的分段錯誤

[英]segmentation fault at every assembly code

我正在嘗試在 raspberry pi 上學習匯編。但我無法開始,我編寫的每個代碼都會出現“分段錯誤”。

.text
.global _start
_start:
   MOV R0, #2
   SWI 0

此代碼出現分段錯誤。 即使我刪除了 MOV 行,它也會出現分段錯誤。

在樹莓派使用的 EABI 中, SWI 0只是系統調用入口。 您仍然需要使用r7指定您想要的功能。 所以,這樣的事情應該工作:

.text
.global _start
_start:
   MOV R0, #2
   MOV R7, #1 ; sys_exit
   SWI 0

嘗試:

bx   lr                   @ Exit if use gcc as linker

要么

mov  r7, #1               @ Exit if use ld as linker
svc  #0                   @ Exit if use ld as linker

某些版本使用swi ,我使用ld作為鏈接器成功使用svc 如果您使用gcc作為鏈接器,則lr寄存器返回到 OS。 確保在代碼開頭保存 lr 寄存器並在bx lr之前恢復它。 有關詳細信息,請參閱將 C 函數與 ARM 匯編一起使用

暫無
暫無

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

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