请教一下汇编里面的“寄存器”是物理意义上的 CPU 里面的寄存器还是逻辑意义上的寄存器?如果是物理意义上的,那么,为什么多个程序同时操作同一个寄存器的时候,他们的数据不会冲突呢?
因为操作系统里面肯定有很多程序在运行的,在微观上,不同的指令应该是串行运行的。通过时间片来切换。
例如 A 程序要执行两个指令:CMP 判断寄存器 rdi 里面的数字是不是 0 ,如果不是 0 ,就用寄存器 rsp 里面的数除以 rdi 。
当 A 程序刚好 CMP 完成以后,时间片切换到 B 程序,此时 B 程序执行 mov 指令,把 0 放到了 rdi 寄存器里面,然后时间片再切换回 A 程序,那么这个时候 A 程序做除法不就会报错了吗?
为什么写汇编的人,似乎从来没有考虑过这种冲突?看起来就像是每个寄存器都是这个程序独占的一样。