gpt4 book ai didi

c - 读取ARM中的堆栈指针值

转载 作者:行者123 更新时间:2023-11-30 14:37:47 26 4
gpt4 key购买 nike

我正在尝试将 SP 寄存器的值存储到 C 中的变量中,这是我的代码:

int address = 0;
asm volatile ("STR sp, [%0]\n\t"
: "=r" ( address)
);

但是执行此代码后,操作系统在屏幕上打印“Segmentation failure”消息并终止程序。有人可以给我建议来解决这个问题吗?

最佳答案

您甚至不应该接触内联汇编中的堆栈指针。这是一个禁忌!!!

你一开始就不应该这样做。只需将其留给编译器即可。

如果您没有更改堆栈指针或在堆栈上写入任何内容,它可能会起作用,您只是使用了错误的指令。

你想要做什么:将堆栈指针复制到32位寄存器。

你做了什么:将堆栈指针本身存储到地址0。==>段错误。

STR sp, [%0]\n\t 替换为 mov %0, sp\n\t

关于c - 读取ARM中的堆栈指针值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57032089/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com