jake1036

linux系统调用小实例

.text
  _entry:
    movl $
4 , %eax
    movl $
1 , %ebx
    movl $message , 
%ecx
    movl $
12 , %edx
    
int $0x80
    movl $
1  , %eax
    
int $0x80

  message:
     .ascii 
"Hello World\n"

  上面的代码中使用了两种系统调用,
   (1)  4号系统调用为写文件操作,eax为功能号,ebx为文件号,上述代码中的1 对应的是 标准输出stdout。
          ecx为参数,缓冲区指针。 edx为写数据的长度。
   (2) 1号系统调用,表示退出程序。
         
  代码编译方法:
    as -o asm.o asm.s
    ld -o asm asm.o

 运行 ./asm
  结果  Hello World

2 感悟
   常用的libc下的系统调用都是已经封装过的,而上述使用到的系统调用则是直接使用内核的方法。
    该代码不使用任何库,也可以独立成一个程序。 







   

posted on 2010-10-23 20:46 kahn 阅读(193) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理