在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。