This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] 编译器/TMS320F28075:中断上下文切换期间 PC 在堆栈上的位置

Guru**** 2615265 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/696455/compiler-tms320f28075-location-of-pc-on-stack-during-an-interrupt-context-switch

器件型号:TMS320F28075

工具/软件:TI C/C++编译器

我想创建一个运行时统计代码分析器。  我已经设置了一个计时器来生成周期性中断。  在定时器 ISR 中、我想在 ISR 上下文切换之前捕获程序计数器的值。
在《TMS320C28x CPU 和指令集参考指南》的第3.1节中、它指出当前的程序上下文(st0、T、Al、AH、PLM PH、 AR0、AR1、DP、ST1、DBGSTAT、 当中断被处理时、PC 和 IER)被保存在堆栈上。

问题:
1) 1)您能告诉我这些寄存器按什么顺序存储在堆栈上吗?

2) 2)我假设我可以使用堆栈指针的适当地址偏移来读取 PC 值。  这是否有效?

3) 3)我是否必须考虑 ASP 和 NASP 汇编指令才能以这种方式使用栈指针?

4) 4)我是否应该考虑其他方法来执行我想要执行的操作?

谢谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    1.您提到的文档中有一个表格列出了"保存操作"顺序。 查找"Register pairs saved and SP positions for context saves"。 此 wiki 页面也包含一些信息: processors.wiki.ti.com/.../C28x_Context_Save_and_Restore

    2.您是指退回的 PC? 是的、您应该能够找到它。

    3.是的、我相信您需要检查 ASP 是否设置了 SPA 位、以确定值与 SP 相关的位置。

    4、不是我能想到的。

    惠特尼