2 个解决方案
#1
就IA-32(包括EM64T)而言,寄存器是独享的。因为共享会涉及到复杂的调度问题,比如:
Core 0:嗨~我要用EAX啦~
Core 1:不行,我这里一个中断要返回EAX!
Core 0:那~我等等?
。。。
Core 0:怎么还没好?
Core 1:中断还要用ECX啊,你占着呢。
Core 0:不行啊,我那个调用EAX的内容现在存在ECX,不能给你用啊
。。。
Core 1:你换到EBX
Core 0:也在用
Core 0:你就不能不用ECX?
Core 1:那我还有个数放哪?EBX你用,EDX我也用。。。
。。。
死机了
Core 0:嗨~我要用EAX啦~
Core 1:不行,我这里一个中断要返回EAX!
Core 0:那~我等等?
。。。
Core 0:怎么还没好?
Core 1:中断还要用ECX啊,你占着呢。
Core 0:不行啊,我那个调用EAX的内容现在存在ECX,不能给你用啊
。。。
Core 1:你换到EBX
Core 0:也在用
Core 0:你就不能不用ECX?
Core 1:那我还有个数放哪?EBX你用,EDX我也用。。。
。。。
死机了
#2
涉及到体系结构了。
#1
就IA-32(包括EM64T)而言,寄存器是独享的。因为共享会涉及到复杂的调度问题,比如:
Core 0:嗨~我要用EAX啦~
Core 1:不行,我这里一个中断要返回EAX!
Core 0:那~我等等?
。。。
Core 0:怎么还没好?
Core 1:中断还要用ECX啊,你占着呢。
Core 0:不行啊,我那个调用EAX的内容现在存在ECX,不能给你用啊
。。。
Core 1:你换到EBX
Core 0:也在用
Core 0:你就不能不用ECX?
Core 1:那我还有个数放哪?EBX你用,EDX我也用。。。
。。。
死机了
Core 0:嗨~我要用EAX啦~
Core 1:不行,我这里一个中断要返回EAX!
Core 0:那~我等等?
。。。
Core 0:怎么还没好?
Core 1:中断还要用ECX啊,你占着呢。
Core 0:不行啊,我那个调用EAX的内容现在存在ECX,不能给你用啊
。。。
Core 1:你换到EBX
Core 0:也在用
Core 0:你就不能不用ECX?
Core 1:那我还有个数放哪?EBX你用,EDX我也用。。。
。。。
死机了
#2
涉及到体系结构了。