问题标签 [gnu-assembler]
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.
linux - 气体装配时推入指令后缀无效
使用 GNU 汇编器汇编文件时,出现以下错误:
hello.s:6:错误:“push”的指令后缀无效
这是我要组装的文件:
这里有什么问题,我该如何解决?
尽管问题中的错误和说明有所不同,但该问题与此问题有些相关。
linux - FreeBSD 系统上简单汇编程序的虚假结果
我在让我在 Linux 上编写的最简单的汇编程序在我的 FreeBSD 机器上运行时遇到了问题。这是有问题的代码(我试图让它尽可能简单):
Linux 机器返回预期结果,即 60,而 FreeBSD 机器始终返回 164 作为返回码。有人知道这是为什么吗?如果是这样,你能向我解释发生了什么吗?另外,我应该提到它们确实都在运行 x86 CPU。提前致谢 :)
assembly - cltq 在汇编中做了什么?
事实上,我的程序很简单:
但是汇编输出很长:
我不明白的是这个块:
c - GCC:禁止使用某些寄存器
这是一个奇怪的要求,但我觉得这是可能的。我想要的是在我的代码区域(用 C 语言编写)中插入一些编译指示或指令,以便 GCC 的寄存器分配器不会使用它们。
我知道我可以做这样的事情,这可能会为这个变量留出这个寄存器
问题是我直接插入新指令(用于硬件模拟器),而 GCC 和 GAS 还不能识别这些指令。我的新指令可以使用现有的通用寄存器,我想确保保留其中的一些(即 r12->r15)。
现在,我在一个模型环境中工作,我想快速做我的实验。将来我将附加 GAS 并将内在函数添加到 GCC 中,但现在我正在寻找一个快速修复。
谢谢!
assembly - `movl (%eax), %eax` 中的括号是什么意思?
我已经用谷歌搜索了足够多的东西,但无法弄清楚括号是什么()
意思。另外,我看到一些语法为movl 8(%ebp), %eax
有人可以建议我一些好的参考吗?我无法在 Google 的前 20 个结果中找到任何结果。
assembly - 如何使用 GNU GAS 汇编器生成像 nasm -f bin 这样的普通二进制文件?
我有一些通常具有以下结构的 NASM 文件:
我像这样组装它们:
我想用 GAS 来写其中的一些。两个问题:
我应该在 GAS 中使用哪些指令?我找到了“.org”指令,但 GAS 似乎没有“.bits”指令。
我应该传递什么
gcc
或as
生成一个普通的二进制文件?即该-f bin
选项对 NASM 的作用。
assembly - NASM 到 GAS:调用 equ'd 符号
我有一些 NASM 文件有一行:
该bmdev.asm
文件具有 equ 指令,例如:
然后包含的文件bmdev.asm
可以调用这些项目。IE
有没有办法将其转换为 GAS?当我尝试进行直接翻译时,即
它似乎没有分解为正确的东西:
NASM 调用反汇编为:
这里的目标是通过 GAS 而不是 NASM为BareMetal OS生成二进制文件。
有效的二进制文件的完整反汇编:
完全反汇编不起作用的二进制文件:
我已经发布了这个问题的(希望)更清晰的版本。关闭这个。
gcc - 需要将旧的 32 位 GAS 代码转换为当前的 GAS 汇编器(pushfl/popl)
我正在尝试在我的现代机器上编译一个旧项目。我知道这个旧项目使用了旧 (2.x) 版本的 GCC/GAS,所以我需要清理它,以便可以使用当前版本编译它。
有问题的代码:
gas
抱怨这pushfl
不是一个指令。从我读到的内容来看,这是一个已弃用的旧 GNU 助记符,但肯定有某种 x86_64 等价物吗?
除了回答如何将此代码转换为 x86_64 气体之外,如果有人能解释助记符喜欢和定义和记录的位置,那就太好pushfl
了pushfq
。我很确定那是 GAS 的创造物……
注意:我想在 gcc 4.6.1 和 gas 2.21 上编译它
assembly - 在 GAS 中调用 equ'd 符号
这是一个小的 NASM 程序:
组装它:
拆开它:
这是一个 GAS 版本:
组装和链接它:
拆开它:
如您所见,反汇编代码略有不同。call
NASM 中的代码:
与气体:
有关如何正确实施 GAS 版本的任何建议?
这是FASM中的程序:
它做正确的事: