c - 在适用于 ARM Cortex M4f 的 Code Composer studio 中将堆栈指针的值保存在 C 变量中

标签 c assembly arm

我想知道一种可以将堆栈指针的值存储到C中变量的方法。

最佳答案

我发现内联 asm 没有用,因为它是特定于编译器的,特别是像这样的东西只需使用 asm 函数。对于 gnu 汇编器:

.thumb
.thumb_func
.globl GETSP
GETSP:
   mov r0,sp
   bx lr

在c中

extern unsigned int GETSP ( void );
...
unsigned int sp;
...
sp=GETSP();

了解您使用它的每个地方每次都会给出相同的值。对于许多编译器来说,整个函数将在整个函数中给出相同的结果,如果该函数被其他不同的函数重用,那么您可能会得到不同的 sp 值。

关于c - 在适用于 ARM Cortex M4f 的 Code Composer studio 中将堆栈指针的值保存在 C 变量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32953949/

相关文章:

字符指针赋值段错误

string - 修改字符数组,修改部分向后显示

assembly - 为什么我必须检查有符号操作的溢出标志而不是 8086 中的进位标志?

linux 驱动程序从用户空间使用 DMA 进行数据传输

c - ARM 皮质 M0+ : How to use "Branch if Carry" instructions in C-code?

c - 在 C 中处理 MacOSX 上的 BSTR

c - 如何通过计算值出现的次数并将其打印在该值旁边来创建一个新数组?

c - 变量的范围。内部工作基础

linux - 设备的内存映射 IO 地址是否映射到进程的内核空间?

在 Windows 中使用 Eclipse 编译 ARM