segmentation fault at every assembly code

后端 未结 2 461
走了就别回头了
走了就别回头了 2021-01-29 05:58

I\'am trying to learn assemly on raspberry pi.But I couldn\'t get started, every code i write gets \"Segmentation Fault\".

.text
.global _start
_start:
   MOV R0         


        
相关标签:
2条回答
  • 2021-01-29 06:06

    In the EABI that the Raspberry Pi uses, SWI 0 is just the system call entry. You still need to specify which function you want using r7. So, something like this should work:

    .text
    .global _start
    _start:
       MOV R0, #2
       MOV R7, #1 ; sys_exit
       SWI 0
    
    0 讨论(0)
  • 2021-01-29 06:14

    Try:

    bx   lr                   @ Exit if use gcc as linker
    

    or

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

    Some version use swi, I have success with svc using ld as the linker. If you use gcc as the linker, the lr register has the return to OS. Be sure to save the lr register at the beginning of your code and restore it before the bx lr. See Using C functions with ARM assembly for more details.

    0 讨论(0)
提交回复
热议问题