12、中断需要保护现场, KF8 系列开发的保护怎么实现的?
KF8 系列采用精简指令集,汇编指令主要只有 68 条,不存在压栈出栈指令,因此汇编代码中断需要手动考虑保护寄存器。 C 语言中断会自动实现压栈出栈的保护,因此中断代码在进入执行前会额外执行一部分代码,主要压栈信息为 PCH、 PSW、 BANK、 R0、 R1。 C 编译器R0-R7 中仅使用 R0、 R1, R2-R5 用来保护现场数据,针对部分芯片还会保护 R7(指针调用)。因此 C 语言开发中嵌汇编实现主要可用为 R0 和 R1,如果使用其他的需要暂停中断使能,使用完毕再打开中断。
|