问题标签 [instruction-encoding]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
55 浏览

assembly - ROUNDSS 的 RMI 指令操作数编码是如何工作的?

ROUNDSS这样的一些 x86 指令需要这种看似晦涩的指令操作数编码,我在英特尔的软件开发人员手册中找不到任何文档或定义。

这种编码的位是如何使用的?我将66 0f 3a 0b c0 0c( roundsd xmm0,xmm0,0xc ) 放入了一个反汇编器并改变了位以获得更好的理解,但只能访问一半的 XMM 寄存器。

我也不清楚

128 位传统 SSE 版本:第一个源操作数和目标操作数相同。

例如66 0f 3a 0b c1 0c,在没有警告/错误的情况下将其反汇编为roundsd xmm0,xmm1,0xc.

0 投票
0 回答
33 浏览

assembly - 强制 NASM 使用四字

在气体中,我可以做到movabs rcx, 0x402041,组装成48b941204000. NASM 不支持movabs. 我试过做mov rcx, 0x402041, 和mov rcx, QWORD 0x402041,但是,在任何一种情况下,NASM 都会将b941204000它组装成反汇编成 mov ecx, 0x402041.

即使结果相同,但对于我的应用程序,我需要汇编程序执行完全movabs等效的操作,并使用相同的字节。我怎样才能告诉 NASM 这样做?

0 投票
1 回答
66 浏览

assembly - arm-thumb 指令集的 blx 指令如何支持 4MB 范围

从https://www.keil.com/support/man/docs/armasm/armasm_dom1361289866046.htm读到arm-thumb 指令的blx指令可以支持最大 4MB 的跳转范围。

但据我所知,arm-thumb 指令只有 16 位长,那么 16 位怎么能包含 4MB 的偏移量呢?

0 投票
1 回答
50 浏览

assembly - 从 .so 文件到运行时内存的指令编码是否不同?

我有一个使用 ARM-V7A 指令集的 Android .so 文件。

我把它拖到 IDA 中,有一行显示:

十六进制窗口显示 的二进制代码b #0x102c14 e0


14 e0具有二进制格式0001 0100 1110 0000,这不是 ARM 手册对该指令进行编码的方式。

除非

8 -- 1表示 1 位到 8 位,9 -- 16表示 9 位到 16 位


为什么指令在 .so 文件中以这种方式编码?


例如,如果我想在运行时更改某个地址的某些指令。我会将其更改为0x14e0(指令在 .so 文件中的编码方式)还是更改为0xe014(指令在 ARM 手册中的编码方式)?

0 投票
0 回答
30 浏览

assembly - 汇编为二进制

我正在尝试将 lw $t3, 12($t0) 转换为二进制,但我被卡住了。

我对基址寄存器寻址不是很熟悉。我知道 lw 是操作码 100011,$t3 是 rt,12 代表 16 位数。结构也是:

操作码 = 6 位,rs = 5 位,rt = 5 位,立即数 = 16 位

如果有人可以帮助将其转换为二进制,那将有很大帮助!

0 投票
0 回答
24 浏览

assembly - ARMv7将具有10位偏移量的LDR指令转换为十六进制数

我有一条 armv7 指令,我想将其转换为十六进制表示。这是指令:

这是我的转换:

1110 0001 1101 0001 0000 0010 1111 0000

十六进制:

E 1 D 1 0 2 F 0

现在以粗体表示的位是我必须代表偏移量的位,它们是 8 位。如果我将我的十六进制数放入转换器中,它会发出以下指令:

我只有 8 位来表示 0x200,即 10 位。我怎么可能这样做?