x86 相关问题

x86是一个源自Intel 8086 CPU的架构。 x86系列包括32位IA-32和64位x86-64架构,以及传统的16位架构。关于后者的问题应该标记为[x86-16]和/或[emu8086]。如果您的问题特定于64位x86-64,请使用[x86-64]标记。对于x86 FPU,请使用标记[x87]。对于SSE1 / 2/3/4 / AVX *,也可以使用[sse]和[avx] / [avx2] / [avx512]中的任何一个

汇编器可以在1byte寄存器上使用movw指令吗?

mov指令有4种类型:movb,movw,movl。后缀b,w,l表示源寄存器的大小。然而,在组装时,我发现了这些后缀的问题。见下面的例子。 .global主...

回答 1 投票 1

为什么icc会为简单的主要部件生成奇怪的装配?

我有一个简单的程序:int main(){return 2 * 7; GCC和clang优化启动时会生成2指令二进制,但icc会产生奇怪的输出。推rbp ...

回答 1 投票 3

汇编是否理解非十六进制的数字?

如果我的问题听起来毫无意义,请原谅我。但我很困惑,比如说我在定义常量buffer_size,我正在研究的代码上有一行代码:buffer_size equ 16,...

回答 2 投票 0

如何让GCC为没有内置的大端存储生成bswap指令?

我正在研究一种以大端格式将64位值存储到内存中的函数。我希望我能编写可在小端和大端平台上运行的便携式C99代码,并且...

回答 3 投票 19

Bootloader堆栈设置

我目前正在尝试了解某段代码。我在这里找到:http://mikeos.sourceforge.net/write-your-own-os.html特别是开始标签下的前两行:BITS 16 ......

回答 1 投票 0

无法理解nasm错误。如何修复代码。

我尝试从asm代码调用printf函数。 hello.asm:%macro exit 0 mov eax,1 mov ebx,0 int 80h%endmacro extern printf; C函数,被称为SECTION .data ...

回答 2 投票 -1

x86中DPL和RPL之间的区别

阅读intel x86手册和其他资源,我不明白DPL(描述符权限级别)和RPL(请求权限级别)之间的区别。为什么两者都有必要?谢谢 ...

回答 1 投票 10

在我们启动多线程代码之前进行初始化

int main(){// X是共享资源initSharedResourceX(); startMultitreadingServer(); //与函数句柄()同时处理请求

回答 1 投票 0

x86和x386寄存器之间的主要区别是什么?

我正在学习英特尔微处理器课程,并阅读有关微处理器和寄存器的内容,我对微处理器之间的寄存器差异感到困惑。例如,我知道x86有8 ...

回答 2 投票 0

在硬件向量指针和相应类型之间`reinterpret_cast`是一个未定义的行为吗?

做这样的事情是合法的吗? constexpr size_t _m256_float_step_sz = sizeof(__ m256)/ sizeof(float); alignas(__ m256)float stack_store [100 * _m256_float_step_sz] {}; __m256&hwvec1 = * ...

回答 2 投票 1

x86机器上的不同CPU可以具有不同的本地APIC寄存器MMIO基址吗?

英特尔手册称本地APIC寄存器的存储器映射到4KB区域,默认地址为FEE00000H。可以使用IA32_APIC_BASE MSR修改此地址。引用SDM第3卷,......

回答 2 投票 5

如何在x86程序集中编写自修改代码

我正在为最近一直在研究的业余爱好虚拟机编写JIT编译器。我知道一点装配,(我主要是一个C程序员。我可以阅读大多数装配参考...

回答 7 投票 43

混合EVEX和VEX编码方案的代价是什么?

已知的问题是混合VEX编码的指令和非VEX指令会受到惩罚,程序员必须意识到这一点。有一些像这样的问题和答案。解决方案......

回答 1 投票 8

x86多字节NOP和指令前缀

作为一个小小的召回,x86架构将0x0F 0x1F [mod R / M]定义为多字节NOP。现在我看一下8字节NOP的具体情况:我有0x0F 0x1F 0x84 0x__ 0x__ 0x__ 0x__ 0x__ ...

回答 1 投票 4

SFENCE是否会阻止Store Buffer隐藏MESI的更改?

如果Core写入但其高速缓存行不存在于其L1中,则它将写入存储缓冲区。另一个Core请求缓存行,MESI无法看到Store Buffer更新并返回...

回答 2 投票 2

如何在x86程序集中正确交换2个字节?

我有一个缓冲区,其中包含:'bac \ n',我正在尝试交换字母'b'和'a'我检查了调试器,它在ebp指向的地址上打印了4个字节:'bac \ n'ebp - ......的地址

回答 3 投票 0

Xeon CPU(E5-2603)后向内存预取

后向内存预取是否与Xeon CPU(E5-2603)中的前向内存预取一样快?我想实现一种算法,该算法既需要数据的正向循环,也需要反向循环。由于每个......

回答 1 投票 2

clflush通过C函数使缓存行无效

我试图使用clflush手动驱逐缓存行,以确定缓存和行大小。我没有找到任何关于如何使用该指令的指南。我所看到的,是一些使用更高的代码......

回答 2 投票 5

Linux是否为TLB使用x86 CPU的PCID功能?如果没有,为什么?

我写了一个内核模块来检查CR4.PCIDE,它没有设置。为什么Linux不使用这样的功能来减少因TLB失效和缓存污染导致的性能下降?

回答 2 投票 24

内联asm:'out'的操作数类型不匹配

我不知道集会的深度。以下代码用于写入硬件端口。编译器在使用内联asm的每一行中都给出操作数类型不匹配错误。当我编译时,我得到这些错误:...

回答 1 投票 3

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