相关疑难解决方法(0)

您如何理解 x86-64 汇编的“REX.W + B8+ rd io”形式?

我最初试图生成立即移动到 64 位寄存器的字节。我想要的具体操作是

mov rdi, 0x1337
Run Code Online (Sandbox Code Playgroud)

使用https://www.felixcloutier.com/x86/mov,我看到的唯一非符号扩展指令是

REX.W + B8+ rd io
Run Code Online (Sandbox Code Playgroud)

这让我很困惑,所以我创建了一个小型汇编程序来查看汇编器会生成什么

          global    _start

          section   .text
_start:   
          mov       rdi, 0x1337 
          syscall                           
          mov       rax, 60                 
          xor       rdi, rdi                
          syscall                           
Run Code Online (Sandbox Code Playgroud)

我必须关闭优化,以便迁移到 64 位寄存器。所以我编译nasm -felf64 -O0 main.asm && ld main.o并生成了一个a.out. 我看着objdump -M intel -d ./a.out这行

48 bf 37 13 00 00 00    movabs rdi,0x1337  
Run Code Online (Sandbox Code Playgroud)

那条线看起来一点也不像

REX.W + B8+ rd io
Run Code Online (Sandbox Code Playgroud)

大部头书?另外,经过一些研究,我发现该命令应该是 10 个字节。你如何从 得到它REX.W + B8+ rd io

assembly x86-64 nasm machine-code instruction-encoding

2
推荐指数
1
解决办法
848
查看次数

I386指令集中GRPL指令的作用是什么?

I386指令集中的“Grpl”指令的作用是什么?我正在学习计算机指令并做指令模拟实验。在模拟的过程中我遇到了这样的指令83 F8 01

\n

为了了解如何使用该指令,我查阅了 i386 手册中的附录 a 操作码映射。由于该指令的操作码为83,所以我找到了操作码映射条目:
\n操作码映射截图

\n

但我不知道GRPL是什么意思,也不知道CPU是做什么的。我检查了Intel 80386指令集,但找不到该指令的描述。以 E 开头的指令后面直接跟着以 H 开头的指令。 (enterhlt)

\n

我还查了谷歌,找不到该命令的描述。由于不知道这条指令的实际含义,我无法模拟它。CPU是如何实现这个功能的呢?正确的查询是什么?我错过了什么\xef\xbc\x9f

\n

x86 assembly machine-code opcode instruction-encoding

2
推荐指数
1
解决办法
149
查看次数

XMM寄存器0未被使用

在Intel x64手册中,它表示在32位SSE2模式下XMM寄存器为0-7.为什么95%使用这些寄存器的指令跳过0并使用1-4?

x86 assembly sse

-1
推荐指数
1
解决办法
81
查看次数

给出每条指令的操作码和代码字节数

我目前正在上一门低级编程课程,不幸的是,我在我们的教科书中找不到这些信息(大多数问题都没有包含在我们的课本中)。我很难确定如何解决这些问题。没有关于“CPU 或任何类似的东西”的信息。问题如下:

给出每条指令的操作码和代码字节数。
(a) mov exc, 984 Op Code_____ 字节数_____
(b) xchg eax, ecx Op Code_____ 字节数_____

还有很多,但如果有人能帮助我理解如何做这两个,我希望能够将其转化为其他问题。

我尝试过一件事,但不确定我看到了什么:我在 Visual Studio 2019 中创建了一个小的 *.asm 项目,并在 (a) 中添加了一行代码并查看了列表文件。我看到它显示以下内容:

00000000  B9 000003D8         mov  ecx, 984   
Run Code Online (Sandbox Code Playgroud)

我不确定是否可以在这里找到这些信息,我只是错过了它,或者有其他方法可以解决这个问题。

x86 assembly instruction-encoding

-1
推荐指数
1
解决办法
62
查看次数

标签 统计

assembly ×4

instruction-encoding ×3

x86 ×3

machine-code ×2

nasm ×1

opcode ×1

sse ×1

x86-64 ×1