这是关于堆栈和中断的问题。
让我们考虑一个用 C 语言编写的程序,其中有一个线程和一个中断。
1)中断(sampleReady())
向程序指示样本
正在等待外围设备。
2)main函数调用子例程Analyze()
来处理每个样本。
当然主要调用Analyze
时,会为Analyze()
创建一个上下文
在堆栈A上。它包含:
a)其参数 b)局部变量 c)退货地址 d)基指针
然后发生中断。一个保存PC,可能是几个寄存器,状态寄存器,...
之后,ISR可以执行。
问题:
1)哪个线程运行ISR?运行main和Analyze()
是否相同?
2)在哪个堆栈上推送ISR的上下文?与main和Analyze()
相同的堆栈?
也不要犹豫,纠正我所做的任何假设。