工作一年了,很是迷茫,一个程序员不知到何去何从,现在互联网上每天都会出现大量的编程语言,大量的新技术,感觉没有自己的方向。
本人对操作系统感兴趣,工作的方向是xen虚拟化研究,在阅读源码的过程中遇到许多和汇编语言相关的知识,这里总结一下汇编语言。
找不到方向就积累知识。
at&t汇编语言的基本框架如下所示
.section .data
.section .text
.globl _start
_start:
movl $1, %eax
movl $0, %ebx
int $0x80
这是一个简单的汇编程序,它的功能非常简单,就是“退出”,将上述代码片段保存成文件exit.s
汇编:
as exit.s -o exit.o
利用as工具将汇编语言汇编成为目标文件(.o文件)
链接:
ld exit.o -o exit
利用ld工具将一个或多个目标文件链接成为可执行文件
执行:
./exit
下面简单介绍一下这段代码的含义
.section是汇编语言的一种“伪指令”,因为这种指令不会被翻译成为机器语言,而只是在汇编器内部使用,不占用存储空间,不会被计算机执行。在linux世界中可执行程序的格式为ELF格式,一个ELF文件由许多段组成,这个伪指令的功能就是标识一个段的起点。
.section .data标识程序数据段的起点,我们可以在这个段中定义任意需要内存的数据,其通常是可读写的。