系统调用,让世界转起来!
我其实不想将它分解开给你看,用户应用程序其实就是一个可怜的瓮中大脑。
话说windows也有syscall,这是必须的。但是win的syscall可以直接call吗?可以是 可以但是破费周折,搞成SDT之类的复杂概念。下面看看linux是如何做的吧。
view plaincopyprint?
section.data msgdb"hellohopy!",0x0a
section.text global_start
_start: moveax,4 movebx,1 movecx,msg movedx,12 int0x80
moveax,1 movebx,0 int0x80
关键是系统调用号要知道,开始找的是usr/include/asm-gen*/unistd.h, 可是都不对。后来找的是usr/include/x86_64_linux_gnu/asm/下的头文件, 有2个,分别对应x86和x64.、编译连接指令如下: nasm