Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 多核CPU中核间/跨核访问寄存器_Assembly_Multicore_Cpu Registers - Fatal编程技术网

Assembly 多核CPU中核间/跨核访问寄存器

Assembly 多核CPU中核间/跨核访问寄存器,assembly,multicore,cpu-registers,Assembly,Multicore,Cpu Registers,这听起来可能很疯狂,但我似乎不清楚是否有一个接口可以让汇编程序员编写代码,将Core1上的一个寄存器加载到Core2上的寄存器。例如,将核心1上的EAX加载到核心2上的EAX。 有可能吗 更多关于汇编程序员使用两个内核(在多个内核上运行代码)的接口是什么的问题?否。要做到这一点,一个内核必须将值存储在内存中,另一个必须将其取出。所以核心部分可能是这样的: mov eax, [235] 核心2可以做到这一点: mov [235], eax 硬件没有直接提供这种功能 然而,要构建真正的工具(例如

这听起来可能很疯狂,但我似乎不清楚是否有一个接口可以让汇编程序员编写代码,将Core1上的一个寄存器加载到Core2上的寄存器。例如,将核心1上的EAX加载到核心2上的EAX。 有可能吗


更多关于汇编程序员使用两个内核(在多个内核上运行代码)的接口是什么的问题?

否。要做到这一点,一个内核必须将值存储在内存中,另一个必须将其取出。所以核心部分可能是这样的:

mov eax, [235]
核心2可以做到这一点:

mov [235], eax

硬件没有直接提供这种功能

然而,要构建真正的工具(例如调试器),必须存在类似的工具。这通常是由系统的内核软件实现的,它为一个CPU“停止”另一个CPU、检查其寄存器状态、修改其寄存器状态、单步执行、修改另一个CPU的内存映射等提供了便利。这些便利建立在允许一个CPU中断另一个CPU的低级硬件原语之上,以及这样组织的代码,CPU中断使中断的CPU使其状态可供中断的CPU使用。(这往往是非常棘手的代码,并且非常依赖于硬件)


Windows通过Win32调用GetThreadContext()提供这些功能(至少是注册访问部分)。我确信Win64有一个等价物,Linux也有类似物,等等。

可能是重复的重复,但快速回答:不,你不能这样做。