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]中的任何一个

在 x86 寻址模式中,ES 和其他模式之间的 :(冒号)是什么意思?

在本组装说明中 mov ax, es:[bx] : 有什么作用?

回答 4 投票 0


helloWorld.o:文件无法识别:文件格式无法识别(在 Windows 上交叉组装 Linux 可执行文件)

我组装了一个名为“helloWorld.s”的程序集文件并将其保存到“helloWorld.o”中,然后我尝试链接它,但它给了我这个错误“helloWorld.o:文件无法识别...

回答 1 投票 0

helloWorld.o:文件无法识别:文件格式无法识别

我组装了一个名为“helloWorld.s”的程序集文件并将其保存到“helloWorld.o”中,然后我尝试链接它,但它给了我这个错误“helloWorld.o:文件无法识别...

回答 1 投票 0

无法解决 C++ 代码的错误 0xc000007b

我正在开发一个项目,使用 Visual C++ Express 2010 和 OpenCV 创建面部检测和跟踪程序。每当我运行该程序时,我都会收到此错误: 错误 OP的版本...

回答 1 投票 0

在 x86 汇编 Linux 中打开文件模式

我正在从《Programming from the Ground up》一书中学习x86汇编Linux,目前我正在学习如何打开文件并读取或写入它。 我在选择时遇到了麻烦...

回答 2 投票 0

寻找 mmap 标志值

我想知道在 os x 上哪里可以找到 mmap 标志值。 mmap 的手册页说要使用 MAP_PRIVATE、MAP_... 等,但如果您正在处理程序集,则必须知道实际值

回答 2 投票 0

x86 如何处理存储条件指令?

我试图找出 x86 处理器在遇到存储条件指令时会做什么。例如,它是否会停止管道的前端并等待 ROB 缓冲区变为...

回答 3 投票 0

Linux 内核中断处理程序中传递函数参数(从 asm 到 C)

当我阅读Linux内核源码时,我遇到了这段代码: __visible void __irq_entry smp_apic_timer_interrupt(struct pt_regs *regs) { struct pt_regs *old_regs = set_irq_regs(重新...

回答 2 投票 0

_mm256_setr_epi64x 在使用 /arch:AVX 构建的 x86 msvc v143 上导致错误结果

EDIT2:我还减少了案例并改进了测试代码 我已经思考这个问题一周了,这可能是一个编译器错误,但我不能完全确定。 我正在使用 MSVC - ...

回答 1 投票 0

我的汇编代码无法运行,我不明白为什么

汇编代码初始化数组 A 和 B,计算这些数组的逐元素和,并将结果存储在数组 C 中。它还提供了一个过程 printarray 来打印整个内容...

回答 1 投票 0

永久更改 GDB 中的反汇编风格

如何永久更改 GDB 中的反汇编风格。我尝试过:在 GDB 中设置反汇编风味 intel,但是当我稍后启动 GDB 时,它仍然具有 att 风味。

回答 1 投票 0

消除英特尔语法中寄存器名称标签的歧义

我想知道如何区分Intel语法中某些指令中的标签名称和寄存器名称。例如,call rdx通常意味着间接跳转,但是如果我们在

回答 2 投票 0

如何使用乘法的符号扩展?

我现在正在学习汇编,我完全不知道如何使用符号扩展。我知道,如果您在 AX 中有一个值并执行 MUL 值,它将将该值乘以 AX 并得到结果...

回答 2 投票 0

如何在AMD(EPYC)处理器上使用rdpmc指令?

这个程序显示当前核心执行的实际CPU核心周期数(使用相关的PMC,我相信是UNHALTED_CORE_CYCLES) #包括 #包括 该程序显示当前核心执行的实际CPU核心周期数(使用相关的PMC,我认为是UNHALTED_CORE_CYCLES) #include <unistd.h> #include <cstdio> int main(int argc, char* argv[]){ unsigned long a, d, c, result; c = (1UL<<30)+1; __asm__ volatile("rdpmc" : "=a" (a), "=d" (d) : "c" (c)); result = (a | (d << 32)); printf("Current cycles : %lu\n", result); } 它在 Intel 处理器上运行良好,但在 AMD 处理器(7001 和 7002)上显示“分段错误”。我的第一个猜测是找到一个与 CPU_CLOCKS_UNHALTED AMD 事件 (0x76) 相关的新 c 值,暂时没有成功 我在英特尔方面没有做任何特别的事情。此 PMC 是否默认启用? 如何让它在 AMD 上运行? 我尝试使用 wrmsr 命令启用计数器此处列出,但他们也立即给了我一个“分段错误” 我尝试了以下命令echo 2 | sudo tee /sys/devices/cpu/rdpmc # enable RDPMC always, not just when a perf event is open 数字错误,AMD 使用的 RDPMC 值与 Intel 不同。根据处理器的不同,通过 rdpmc 直接支持多个事件,请参阅此 AMD 手册 了解更多信息(第 rdpmc 部分)。 在您的情况下,核心周期数应该是 0。 所以这个片段应该适用于 AMD 来计数 PERF_COUNT_HW_CPU_CYCLES #include <unistd.h> #include <cstdio> int main(int argc, char* argv[]){ unsigned long a, d, c, result; c = 0; __asm__ volatile("rdpmc" : "=a" (a), "=d" (d) : "c" (c)); result = (a | (d << 32)); printf("Current cycles : %lu\n", result); } 在 Ryzen 7950X 上测试

回答 1 投票 0

x86 过程(32 位)仅适用于我的代码的某些部分

欢迎所有真正的解决方案/建议/帮助。先感谢您。 这是我的基本问题: 为什么我的“Print.asm”文件底部的“ClrScreen”过程在某些位置不起作用......

回答 1 投票 0

即使设置了 PCE,用户模式下的 rdpmc 也无法工作

根据维基百科条目以及英特尔手册,只要设置了 CR4 的第 8 位,rdpmc 就应该可用于用户模式进程。但是,我仍然遇到一般保护错误...

回答 2 投票 0

如何将 AT&T 语法转换为 NASM 语法?

如何将此 ATS 语法汇编代码转换为 NASM 语法,以便 NASM 可以理解: .文件“kernel.c” .globl_videoMemory 。数据 .对齐4 _视频内存: .长

回答 1 投票 0

在gcc中使用“-masm=intel”时出现“Error: invalid use of register”,但在AT&T模式下没有错误

我尝试使用 gcc 和 -masm=intel 选项编译一个非常简单的程序。但反而出现“错误:寄存器使用无效”。 // 测试.c #包括 size_t 偏移量; 整数

回答 1 投票 0

在gcc中使用“-masm=intel”时出现“Error: invalid use of register”

我只是使用带有“-masm=intel”选项的gcc编译了一个非常简单的程序。但是出现“Error: invalid use of register”。 // 测试.c #包括 size_t 偏移量; INT...

回答 1 投票 0

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