JMP对堆栈和帧指针做了什么?

And*_*yuk 5 x86 assembly

当一个程序集有像jmp这样的指令时,堆栈和帧指针会发生什么?

我的意思是 - f是记忆中的标签吗?我们怎样才能跳转到内存中的不同地址而不更新我们的帧和堆栈指针......

编辑:我说的是英特尔x86组装是的:)

Nat*_*man 6

堆栈和帧指针处理位置的的数据. jmp指令处理位置的的代码.除非发生严重的事情,否则不应影响另一方.这是一个激烈的事情清单:

  • 任务切换 - 由于使用任务门进行远程跳转
  • 故障 - 由于跳转到无效的新页面,或跳出当前段,或者jmp试图非法更改权限.
  • 陷阱 - 例如,由于代码断点.事实上,目前还没有其他陷阱.

就是这样.即使这些情况也会改变堆栈,因为它们涉及某种上下文切换,无论是新任务还是某些异常处理程序.

另请注意,我所知道的操作系统不使用CPU的任务切换功能.它通常用软件实现.