Assembly 两个汇编程序如何使用同一寄存器

Assembly 两个汇编程序如何使用同一寄存器,assembly,cpu-registers,Assembly,Cpu Registers,我正在学习汇编8086,我知道汇编程序经常使用寄存器,两个同时运行的汇编程序怎么可能使用相同的寄存器而不互相中断呢。我想也许一台电脑可以有多套寄存器,比如100套,这样每个程序都可以在不中断其他程序的情况下使用一套寄存器。不管怎样,这只是一个猜测 如果CPU一次可以运行多个执行线程,那么它确实为每个可支持的并发线程提供了一组单独的寄存器。出于历史原因,您经常会看到这种情况被描述为计算机拥有多个CPU,即使现在这些“CPU”通常都位于同一个物理芯片上,并且比这更紧密地耦合在一起 但通常,计算机上执

我正在学习汇编8086,我知道汇编程序经常使用寄存器,两个同时运行的汇编程序怎么可能使用相同的寄存器而不互相中断呢。我想也许一台电脑可以有多套寄存器,比如100套,这样每个程序都可以在不中断其他程序的情况下使用一套寄存器。不管怎样,这只是一个猜测

如果CPU一次可以运行多个执行线程,那么它确实为每个可支持的并发线程提供了一组单独的寄存器。出于历史原因,您经常会看到这种情况被描述为计算机拥有多个CPU,即使现在这些“CPU”通常都位于同一个物理芯片上,并且比这更紧密地耦合在一起

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


一些CPU试图使用额外的寄存器集来加速上下文切换,但结果证明这并不像您想象的那样有用,因此也不是很常见。(然而,中断处理程序专用的一组或部分寄存器是很常见的。CPU也经常使用一组不可见的额外寄存器,但它们是不可见的。)

“两个同时运行的汇编程序”。。。从技术上讲,这永远不会发生,单核只执行单个机器代码线程(尽管x86可能会以不同的顺序推测执行指令,或者在同一机器周期中执行多个指令)。每个核心都有自己的寄存器集。当两个程序同时运行时,要么通过操作系统每隔几毫秒在它们之间切换一次(搜索一些“多任务”文章),要么在不同的内核上运行它们。