- 查看系统调用表,选择想要使用的系统调用
man syscalls
我选择了getpid。 - 查找系统调用号
从/usr/include/asm/unistd.h 或/usr/include/bits/syscall.h查找得到getpid的系统调用号为20 - 用man指令分析getpid
- 编写C代码:getpid.c
#include<stdio.h>
#include<unistd.h>
int main(void){
printf("Process id:%d
",getpid());
return 0;
}
5.编写嵌入式汇编代码getpid_asm.c
#include<stdio.h>
#include<unistd.h>
int main(void)
{
int pid;
asm volatile(
"mov $0,%%ebx
" //ebx寄存器清零
"mov $0x14,%%eax
"//把getpid的系统调用号20传入eax寄存器
"int $0x80
"//执行系统调用
"mov %%eax,%0
"//把eax寄存器的值赋给pid
: "=m"(pid)
);
printf("Process id:%d
",pid);
return 0;
}
6.测试