【问题标题】:How come assigning to a register is not causing problems with everything else? [duplicate]为什么分配给寄存器不会导致其他所有问题? [复制]
【发布时间】:2021-05-24 22:50:07
【问题描述】:

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

【问题讨论】:

  • 关于你的最后一个问题:是的。每个进程,或每个线程,或每个任务,都有自己的寄存器集。当操作系统抢占一个任务时,它会将所有寄存器保存在特定于任务的内存区域中。然后为了恢复同一个任务或另一个任务,目标任务的寄存器值从该任务的内存区域恢复。
  • @ecm 谢谢!现在只有我能找到一种方法来接受评论作为答案......
  • 添加为答案,以便您接受。
  • @ecm 谢谢!
  • 另见time slice。处理 CPU 的时间片是一种操作系统功能,可以虚拟化 CPU 的计算能力。

标签: assembly cpu-registers


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2021-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多