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

use*_*109 1 assembly cpu-registers

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

zwo*_*wol 5

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

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

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