2个汇编程序如何使用相同的寄存器

时间:2016-10-02 15:06:22

标签: assembly cpu-registers

我正在学习assembly 8086并且我理解assembly程序经常使用寄存器,如何在同一时间运行的2 assembly个程序可以使用相同的寄存器而不用互相打断。我想也许PC可以有100套寄存器,所以每个程序都可以使用寄存器而不会中断其他程序。好吧无论如何这只是猜测。

1 个答案:

答案 0 :(得分:5)

如果CPU一次可以运行多个执行线程,那么它确实为每个可以支持的并发线程设置了一组寄存器。由于历史原因,您经常会将此描述为具有多个CPU 的计算机,即使现在这些“CPU”通常都位于同一物理芯片上,并且比所建议的更加紧密耦合。

但通常在计算机上执行的“进程”比运行它们的“CPU”要多得多。每次操作系统将CPU从一个程序中取出并将其交给另一个程序时,它会将第一个程序的所有寄存器保存在内存中,并恢复第二个程序的所有寄存器。这称为context switch

有些CPU尝试使用额外的寄存器来加速上下文切换,但事实证明这并不像你想象的那样有用,因此并不常见。 (但是,专用于中断处理程序的额外寄存器或部分寄存器非常常见.CPU通常会有一堆用于out-of-order execution不可见额外寄存器。 ,但它们是看不见的。)