红联Linux门户
Linux帮助

最简单的AT&T汇编 求翻译

发布时间:2012-10-09 22:23:55来源:红联作者:mr_tianwei
.data
output: .ascii "hello world\n"
.text
.globl _start
_start:
movl $4, %eax
movl $1, %ebx
movl $output, %ecx
movl $12, %edx
int $0x80
movl $1, %eax
int $0x80


能具体解释下上面的代码部分么,尤其是给寄存器赋值4,1,12 的意思
文章评论

共有 2 条评论

  1. mr_tianwei 于 2012-10-11 10:13:17发表:

    2# jinger7281
    这些概念我知道了,能把他们联系起来 解释下吗?每一行代码间的联系,因为我还是不知道怎么打印出 hello world 的

  2. jinger7281 于 2012-10-10 12:02:04发表:

    ebx = file descriptor
    ecx = pointer to buffer
    edx = buffer size
    eax = system call - sys_read
    其中你的:
    4代表的是你的系统调用sys_read。
    1代表的是文件描述符-这里代表的是标准输出,linux系统中所有东西都是文件,不要纠结。
    12代表的是你的传入的字符大小-12个字符。
    int $0x80则是系统的中断。