为什么分配给寄存器不会导致其他所有问题?

问题描述

在汇编中,我们通常使用 movld 等指令将值加载到寄存器中。但是,为什么它会起作用?例如,如果一个程序正在将一个值写入 eax 寄存器,而另一个程序从中读取,为什么它不读取另一个程序写入的值? cpu或操作系统或类似的东西是否为每个正在运行的程序提供了一组寄存器?

解决方法

CPU 或操作系统或类似的东西是否为每个正在运行的程序提供了一组寄存器?

是的。每个进程,或每个线程,或每个任务,都有自己的寄存器集。当操作系统抢占任务时,它会将所有寄存器保存在特定于任务的内存区域中。然后为了恢复同一个任务或另一个任务,目标任务的寄存器值从该任务的内存区域中恢复。