2个汇编程序如何使用相同的寄存器
how can 2 assembly programs use the same register
我正在学习assembly 8086
,我了解到assembly
程序经常使用寄存器,怎么可能2个assembly
同时运行的程序可以使用同一个注册互不打扰。我想也许一台 PC 可以有几组寄存器,比如 100 组这样每个程序都可以使用一个寄存器而不会中断其他程序。好吧,无论如何这只是一个猜测。
如果 CPU 可以 运行 一次执行多个线程,那么它确实为它可以支持的每个并发线程提供了一组单独的寄存器。由于历史原因,您经常会看到这被描述为具有 多个 CPU 的计算机,尽管现在这些 "CPUs" 通常都在同一个物理芯片上并且比建议的耦合更紧密。
但通常在计算机上执行的 "processes" 比 "CPUs" 到 运行 它们要多得多。每次操作系统从一个程序中取出 CPU 并将其交给另一个程序时,它会将第一个程序的所有寄存器保存在内存中,并恢复第二个程序的所有寄存器。这称为 context switch.
一些 CPU 尝试使用额外的寄存器组来加速上下文切换,但事实证明这并没有您想象的那么有用,因此并不常见。 (然而,专供中断处理程序使用的一组额外的或部分的寄存器是很常见的。CPU 有一堆 不可见的 额外寄存器也很常见用于 out-of-order execution,但它们是不可见的。)
我正在学习assembly 8086
,我了解到assembly
程序经常使用寄存器,怎么可能2个assembly
同时运行的程序可以使用同一个注册互不打扰。我想也许一台 PC 可以有几组寄存器,比如 100 组这样每个程序都可以使用一个寄存器而不会中断其他程序。好吧,无论如何这只是一个猜测。
如果 CPU 可以 运行 一次执行多个线程,那么它确实为它可以支持的每个并发线程提供了一组单独的寄存器。由于历史原因,您经常会看到这被描述为具有 多个 CPU 的计算机,尽管现在这些 "CPUs" 通常都在同一个物理芯片上并且比建议的耦合更紧密。
但通常在计算机上执行的 "processes" 比 "CPUs" 到 运行 它们要多得多。每次操作系统从一个程序中取出 CPU 并将其交给另一个程序时,它会将第一个程序的所有寄存器保存在内存中,并恢复第二个程序的所有寄存器。这称为 context switch.
一些 CPU 尝试使用额外的寄存器组来加速上下文切换,但事实证明这并没有您想象的那么有用,因此并不常见。 (然而,专供中断处理程序使用的一组额外的或部分的寄存器是很常见的。CPU 有一堆 不可见的 额外寄存器也很常见用于 out-of-order execution,但它们是不可见的。)