使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用

朱恒志 + 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ”

使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用

系统调用列表参见http://codelab.shiyanlou.com/xref/linux-3.18.6/arch/x86/syscalls/syscall_32.tbl

我选择了20号:
使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用_第1张图片

使用库函数API在屏幕上显示进程的ID:

使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用_第2张图片

使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用_第3张图片

使用C语言内嵌汇编代码:

代码:

#include <unistd.h>

#include <stdio.h>

int main()

{

pid_t pid; pid = getpid();

asm volatile(

"mov $0x14,%%eax\n\t"

"int $0x80\n\t"

"mov %%eax,%0\n\t"

 : "=m" (pid) );

printf("pid = %d \n",pid);

return 0;

}

使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用_第4张图片

 

你可能感兴趣的:(使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用)