26得票3回答
如何在Linux上从C源代码生成可编译的NASM汇编代码?

测试平台为32位Linux。 基本上,我知道gcc可以用来生成Intel和At&T风格的汇编代码,但似乎你不能直接使用nasm/tasm来编译gcc生成的Intel风格的汇编代码。 我正在进行一个项目分析,需要在Windows和Linux平台上分析汇编代码,所以我想知道它们是否都可...

25得票4回答
MOV src, dest (or) MOV dest, src?

MOV指令可能是每个学习汇编语言的人学习的第一条指令。 刚才我遇到了一本书《GNU / Linux下的IA32体系结构汇编语言编程》Rajat Moona著,其中说到:(已删除损坏的链接) 但是我学到的是MOV dest, src。就像“用src来装载dest”一样。甚至维基也这么说。 ...

24得票4回答
GCC: 禁用某些寄存器

这是一个奇怪的请求,但我感觉这可能是有可能的。我想要做的是在我的 C 代码中插入一些编译指示或指令,以便 GCC 的寄存器分配器不会使用它们。 我知道我可以像这样做,也许可以为这个变量留出寄存器:register int var1 asm ("EBX") = 1984; register i...

23得票3回答
何时需要使用 GAS ELF 指令 .type、.thumb、.size 和 .section?

我正在为基于ARM Cortex-M3的微控制器编写汇编程序(使用Thumb 2指令集),使用GNU as。 在一些示例代码中,我发现了像 .size、.section 和 .type 这样的指令,我明白它们是ELF指令。举个例子: .section .text.Reset_Han...

21得票4回答
如何在不使用gcc的情况下,使用ld将使用C标准库的气体组装程序链接起来?

作为一个学习更加精确的 c 语言程序如何工作以及程序必须具备什么最小程度内容才能使用 libc 的练习,我决定尝试使用 gas 和 ld来编写 x86 汇编程序。 作为一个有趣的挑战,我已经成功汇编并链接了几个连接到不同自制动态库的程序,但是在没有直接使用 gcc 的情况下编写使用 libc...

20得票3回答
在Mac OS X上组装项目时出现“无此指令”错误

我使用homebrew安装了GCC 4.7.0,但我的项目在汇编时失败了。我可以成功地将代码从.c转换为.s,但是.s转换为.o失败。 要查看用于安装GCC的brew公式,请查看:https://github.com/Homebrew/homebrew-dupes/blob/master/g...

20得票2回答
使用GNU汇编器在x86_64中调用printf函数

我用AT&T语法编写了一个程序,可与GNU汇编器一起使用: .data format: .ascii "%d\n" .text .global main main: mov ...

19得票4回答
使用gas汇编时,push指令的后缀无效。

使用GNU汇编器组装一个文件时,我遇到了以下错误: hello.s:6: Error: invalid instruction suffix for `push' 这是我试图汇编的文件: .text LC0: .ascii "Hello, world!...

19得票3回答
内部重定位未固定

我最近开始学习ARM核的汇编语言编程。我的第一个小例程只有.text部分,没有任何问题。 作为一个逻辑扩展,我想将汇编代码结构化成通常的部分:.text、.data、.bss。 因此,我写了下面这个简单的程序: .globl _start .section .text _start...

19得票3回答
在GNU GAS汇编中,是否有代表当前地址的符号?

我想知道是否有特殊的GAS语法可以实现与NASM示例相同的功能:SECTION .data msg: db "Hello World",10,0 ; the 0-terminated string. len: equ $-msg ...