我可以在每个内核的基础上编写汇编代码吗?

问题描述 投票:3回答:6

有人愿意演示英特尔汇编代码如何表示不同内核正在处理的不同线程吗?我想您每个线程/核心没有一个汇编文件?

编辑:让我重写一下:如果我想在不同的CPU内核上编写汇编程序,我可以控制X内核上发生的事情以及每个内核之间的通信吗(就像一个内核可以控制内核上的寄存器值一样?)] >

有人愿意演示英特尔汇编代码如何表示不同内核正在处理的不同线程吗?我想您每个线程/核心没有一个汇编文件? ...

assembly intel masm
6个回答
2
投票

所以您想在没有操作系统帮助的情况下启动线程。


1
投票

在汇编级别,线程看起来与其他任何代码一样。某些指令具有在线程上下文中有用的语义,例如LOCK CMPXCHG,它执行原子比较和交换。但是通常,线程是通过操作系统调用创建和管理的,通常您不会看到“管道”。您只需将其中一个函数传递给线程创建API,它就会开始与当前代码并行(或交错)执行。其余的取决于您。


0
投票

全部取决于您的体系结构-Windows? Linux的?苹果系统?通常,线程将由您的操作系统管理,就像使用高级语言一样。从代码的角度来看,您需要让操作系统使用与C中使用的相同的API创建线程。


0
投票

由于是MASM,我想您正在使用Windows。您调用CreateThread传递线程启动过程的地址(和其他一些东西)。


0
投票

是,可以。您需要编写自己的OS才能实现绝对控制。这是操作系统功能的一部分,并且它公开给您的能力取决于操作系统。


0
投票

我相信,由于安全原因,像WIN 7 x64和Debian 9这样的x64操作系统已经实现了安全的多线程,每个程序(任务)都应该拥有自己的内存,寄存器和cpu内核,这与在旧的linux上您可以读取内存(和使用内核函数的邻居进程,它是所有其他进程的父进程。我知道,由于硬件限制,这是不可能的,在Windows或Linux中是太多的任务。我想为AMD x64写一个简单的操作系统,执行简单的四个任务-2个内核x 2个线程,但是我找不到在汇编器中如何制作4个线程并为每个任务选择每个内核/线程的说明(可能在引导加载程序级别) )。有任何想法吗。乍一看,x64是较高c / c ++级别的某种多处理器仿真。

© www.soinside.com 2019 - 2024. All rights reserved.