在Linux中编译/运行汇编程序?

我相当新的Linux(Ubuntu 10.04)和汇编的新手。 我正在关注一些教程,我找不到特定于Linux的任何东西。 所以,我的问题是,编译/运行汇编程序有什么好的包,编译/运行该程序包的命令行命令是什么?

GNU汇编器(气体)和NASM都是不错的select。 但是,它们有一些差异,最大的一个就是你的操作顺序和操作数。

天然气使用AT&T语法:

mnemonic source, destination 

nasm使用英特尔风格:

 mnemonic destination, source 

任何一个可能会做你所需要的。

试试这个教程: http : //asm.sourceforge.net/intro/Assembly-Intro.html

GNU汇编程序可能已经安装在您的系统上。 试试看看完整的使用信息。 你可以使用as来编译单个文件和ld链接,如果你真的,真的想。

但是,海湾合作委员会是一个很好的前端。 它可以为你assembly.s文件。 例如:

 $ cat >hello.s <<EOF .data .globl hello hello: .string "Hello, world!" .text .global main main: pushq %rbp movq %rsp, %rbp movq $hello, %rdi call puts movq $0, %rax leave ret EOF $ gcc hello.s -o hello $ ./hello Hello, world! 

上面的代码是AMD64。 如果你还在32位机器上,情况会不一样。

你也可以直接编译C / C ++代码来进行汇编,如果你好奇的是如何工作:

 $ cat >hello.c <<EOF #include <stdio.h> int main(void) { printf("Hello, world!\n"); return 0; } EOF $ gcc -S hello.c -o hello.s 

如果你正在使用NASM,命令行就是这样

 nasm file.asm -o outfile 

其中'file.asm'是你的程序集文件(代码)和'outfile'是你想要的可执行文件。

这里是一些更多的信息:

http://www.nasm.us/doc/nasmdoc2.html#section-2.1

您可以使用以下命令在Ubuntu中安装NASM:

 apt-get install nasm 

下面是Linux程序集中一个基本的Hello World,以激发你的胃口:

http://web.archive.org/web/20120822144129/http://www.cin.ufpe.br/~if817/arquivos/asmtut/index.html

我希望这是你所问的

Linux也有FASM。

 format ELF executable segment readable executable start: mov eax, 4 mov ebx, 1 mov ecx, hello_msg mov edx, hello_size int 80h mov eax, 1 mov ebx, 0 int 80h segment readable writeable hello_msg db "Hello World!",10,0 hello_size = $-hello_msg 

它与之交谈

 fasm hello.asm hello 

我的build议是从底层开始编程:

pgubook/ProgrammingGroundUp-1-0-booksize.pdf

这是在linux下进行汇编编程的一个非常好的开始,它解释了很多你需要了解的基础知识。

汇编器(GNU) 如(1)

3语法(nasm,tasm,gas)在1个汇编器中,yasm。

http://www.tortall.net/projects/yasm/