相关疑难解决方法(0)

多核汇编语言是什么样的?

曾几何时,为了编写x86汇编程序,你会得到一条说明"加载EDX寄存器的值为5","递增EDX"寄存器等的指令.

对于具有4个核心(甚至更多)的现代CPU,在机器代码级别上它看起来就像有4个独立的CPU(即只有4个不同的"EDX"寄存器)?如果是这样,当你说"递增EDX寄存器"时,是什么决定了哪个CPU的EDX寄存器递增?现在x86汇编程序中是否存在"CPU上下文"或"线程"概念?

核心之间的通信/同步如何工作?

如果您正在编写操作系统,那么通过硬件公开哪种机制可以让您在不同的内核上安排执行?这是一些特殊的特权指示吗?

如果您正在为多核CPU编写优化编译器/字节码VM,那么您需要具体了解x86,以使其生成能够在所有内核中高效运行的代码?

对x86机​​器代码进行了哪些更改以支持多核功能?

cpu x86 assembly multicore smp

231
推荐指数
7
解决办法
4万
查看次数

如何在没有操作系统的情况下运行程序?

如何在没有运行操作系统的情况下自行运行程序?你能创建计算机可以在启动时加载和运行的汇编程序,例如从闪存驱动器启动计算机并运行cpu上的程序吗?

x86 assembly operating-system osdev bootloader

227
推荐指数
3
解决办法
8万
查看次数

直接读程序计数器

在内核模式或其他模式下,可以直接读取Intel CPU上的程序计数器(即没有"技巧")吗?

x86 assembly program-counter

29
推荐指数
4
解决办法
2万
查看次数

为什么即使可以设置其他代码,也不能mov设置代码段寄存器CS?

我需要知道是否有直接使用mov指令加载代码段寄存器的限制。

从实模式切换到保护模式时,这让我感到震惊。我发现为了在代码段中放入正确的值,“跳转”指令用于设置正确的段。

那么,由于任何这样的限制,跳转指令的这种用法吗?为什么我们不能直接将值加载到代码段中?

x86 assembly memory-segmentation

3
推荐指数
1
解决办法
776
查看次数