断点保护肯定是硬件的,这个软件没可能实现,只能是硬件保护返回地址。
现场保护则不一定,有可能是软件的,也有可能是硬件的,单片机不同,或者说不同的内核,处理方式不一样。
两种现场保护方式,各有优、缺点,简单点说,软件保护现场则硬件简单但软件复杂,硬件保护现场则软件简单硬件复杂。
比如ARM的CM3中断处理程序,看起来与普通程序完全一样,软件上不需要做特殊处理,可以直接用标准C语言写。
又比如51的中断处理,硬件只保存一个返回地址,返回还要用中断返回指令,使用任何寄存器都需要软件处理现场保护,写程序的时候就要麻烦一点。另一方面,相对来说它的硬件就简单一些。
还有就是要指出,硬件保护实时性会好一些,软件保护则更灵活一些。
这个跟单片机架构有关。8051硬件实现断点保护也就是中断时pc自动入栈,但是现场保护也就是各寄存器入栈由软件实现。arm处理器的话除了断点保护,前8个寄存器也是自动入栈的。如果你用C语言开发不需要考虑这个
关注这个问题