Raspberry Pi 3 M型B臂组件非法指令(核心倾倒)



我正在用新的Raspberry Pi弄乱,我对组装的新手是新手。我已经搜寻了Google,因此为此解决了这个问题,这是我最接近运行程序的方法。

main.s(评论来自我在Internet上发现的解释(

.section .text
.global _start
_start:
    mov x0, #0 // return value 0 for success
    mov x7, #1 // 1 is exit in the vector table
    svc 0      // execute the system call to exit the program

i然后与as main.s -o main.o组装,并与ld main.o -o main链接。使用./main输出运行"非法指令(核心倾倒("。

这是一个覆盆子Pi B型B跑动臂Arch Linux在64位四核ARM Cortex-A53上。

目标:仅使用asld进行编译和链接的ARM组装程序,该程序将成功退出

在MAN页面中的syscall中,它指出,syscalls的ARM64架构呼叫约定为:"参数:x8"one_answers"指令:SVC#0"。在这个GitHub项目中,"退出"的SYSCALL论点定义为" 93"。因此,这是仅使用asld ...

编制的工作,退出和后续的ARM程序
.section .text
.global _start
_start:
    mov x0, #0  // exit with status 0
    mov x8, #93 // svc argument goes in x8, and the argument for 'exit' is 93
    svc #0      // executes a syscall in arm64

另一个答案,因此有有关系统调用的有用信息

您将值0移至内存地址0。您不能仅写入任意内存位置。该程序失败了,因为它试图写入其不拥有的内存区域。尝试将其移至有效的寄存器。

也有很多好的教程:

https://azeria-labs.com/writing-arm-sembly-part-1/

http://www.peter-cockerell.net/aalp/html/frames.html

https://www.coranac.com/tonc/text/asm.htm

和视频:

https://www.youtube.com/watch?v=sm6v9uyhcka

.section .text
.global _start
_start:
    //mov r0, #0 // ARM 32-bit version
    mov x0, #0   // ARM 64-bit version
    //mov r7, #1 // ARM 32-bit version of this (Raspbian)
    mov x8, #93  // ARM 64-bit version of this (Ubuntu 64-bit, Arch64)
    svc 0        // execute the system call to exit the program

相关内容

  • 没有找到相关文章

最新更新