问题标签 [machine-code]

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 投票
2 回答
1823 浏览

assembly - 汇编代码是跨平台的吗?

0x042444FF是机器代码,inc dword ptr [esp+4]而是汇编代码,我知道机器代码不是跨平台的,因为它取决于许多因素。

汇编代码呢,它取决于 CPU 吗?

0 投票
3 回答
1390 浏览

assembly - 是否有命令行工具来获取汇编指令的机器代码?

我需要这个工具来知道哪个部分意味着incdword反之亦然。

0 投票
3 回答
31547 浏览

assembly - 如何将汇编翻译成二进制?

例如:

0 投票
9 回答
1742 浏览

assembly - 十六进制序列如何毫无歧义地翻译成汇编?

像上面这样的一个序列可以用各种方式进行分段,每个段都可以翻译成相应的汇编指令,但是每个二进制可执行文件都有其唯一的 DEFINITE 汇编,避免歧义的数学原理是什么?

更新

得票最多的答案实际上根本没有回答我的问题。

0 投票
7 回答
8879 浏览

cpu - CPU如何知道它的指令集?

基本的电脑操作问题,但我不知道怎么问。当我们说计算机具有指令集时,计算机如何知道该指令集是什么?它存储在ROM芯片中吗?它是否存储在CPU中的某个地方?制造商将它放在哪里以便它可以读取磁盘并开始处理机器代码?

0 投票
1 回答
388 浏览

binary - 填充的意义何在?

特别是,我正在阅读 OS X 上 Intel 32 的 Mach-O 二进制文件格式。在 FAT 标头之后,在第一个存档的偏移量之前有一大堆填充。所有这些填充有什么意义?

更具体地说,在 FAT 头和第一个存档(特别是 mach_header)之间有超过 4000 字节的填充。为什么要包含所有这些额外的字节?!OS X 是否喜欢在其所有通用二进制文件中添加 4 KB?

0 投票
6 回答
7455 浏览

assembly - 如何判断 x86 指令的长度?

我正在查看汇编中的不同指令,我对如何确定不同操作数和操作码的长度感到困惑。

这是您应该从经验中了解的内容,还是有办法找出哪个操作数/运算符组合占用了多少字节?

例如:

所以问题是:

看到给定指令后,我如何推断其操作码需要多少字节?

0 投票
4 回答
822 浏览

compiler-construction - 将汇编语言编译为机器代码涉及哪些阶段

我正在尝试编写一个编译器来获取一个汇编文件,该文件将输出原始机器代码指令。

我找到了很多关于如何编写编译器的教程,但我想知道是否所有阶段都与汇编程序助记符有关。例如,考虑到汇编程序的简化的逐阶段格式,词法分析是否完全有必要,还是仍然需要,但格式更简单?

0 投票
5 回答
652 浏览

binary - 如何从可执行文件/目标文件中查看 0 和 1/机器代码?

我已经试过了,我用文本编辑器打开了一个 a.out 文件,但我只得到一堆字符,里面有一些指令,比如:

üÙ

0 投票
4 回答
16615 浏览

c - AMD64 -- nopw 汇编指令?

在此编译器输出中,我试图了解nopw指令的机器代码编码是如何工作的:

在http://john.freml.in/amd64-nopl有一些关于“nopw”的讨论。谁能解释 4004d2-4004e0 的含义?从操作码列表看,代码似乎66 ..是多字节扩展。我觉得我可能会比我在这里得到更好的答案,除非我尝试探索操作码列表几个小时。


该 asm 输出来自 C 中的以下(疯狂)代码,该代码优化为一个简单的无限循环:

当使用 编译时gcc -O2,编译器识别出无限递归并将其变成无限循环;事实上,它做得很好,以至于它实际上在main()没有调用recurse()函数的情况下循环。


编者注:使用 NOP 填充函数并不特定于无限循环。这是 Godbolt 编译器资源管理器上具有一系列 NOP 长度的函数集。