实验过程

  1. 选择20号系统调用getpid(取得进程识别码)
  2. 在网上查询getpid函数的C语言代码以及其嵌入式汇编语句

    C语言代码:

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <unistd.h>
    int main(int argc, const char *argv[])
    {
    pid_t tt;
    tt = getpid();
    printf("%u\n", tt);
    return 0;
    }

    嵌入式汇编语句:

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <unistd.h>
    int main(int argc, const char *argv[])
    {
    pid_t tt;
    asm volatile(
    "mov $0x14, %%eax\n\t"
    "int $0x80\n\t"
    "mov %%eax, %0\n\t"
    :"=m" (tt)
    );
    printf("%u\n", tt);
    return 0;
    }
  3. 进入实验楼打开XFCE,在cd Code目录下输入指令: vi getpid.c;新建并打开getpid.c文件,在VI中输入在网上查阅的实现getpid的函数代码后,保存并退出。
  4. 再用gcc将该函数代码进行编译。通过输入指令./getpid即可得出目前进程号为:29895

5.修改getpid.c,改为嵌入式汇编语句,保存并退出后,使用以下命令gcc getpid -o getpid.c -m32编译

6.使用以下命令 ./getpid 运行得到目前的进程号为11926

实验总结

1. 系统调用的三层皮

1.API(xyz)

2.中断向量(system_call)

3.中断服务程序(sys_xyz)

2. 内嵌汇编调用system call

1.系统调用号放在eax中。

2.系统调用的参数,按照顺序分别放在ebx、ecx、edx、esi、edi和ebp中

3.返回值使用eax传递

作者: 王雪铖

原创作品转载请注明出处

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

最新文章

  1. 从零开始,搭建博客系统MVC5+EF6搭建框架(3),添加Nlog日志、缓存机制(MemoryCache、RedisCache)、创建控制器父类BaseController
  2. JSONArray的使用
  3. atitit 提升数据库死锁处理总结
  4. C语言 百炼成钢11
  5. 列出本机JCE提供者,支持消息摘要算法,支持公钥私钥算法
  6. 如何从Win7中提取制作Windows PE3.0
  7. android intent收集转载汇总
  8. maven仓库总结,maven私服搭建
  9. Swift中的异常处理
  10. 数据结构中,几种树的结构表示方法(C语言实现)
  11. ACM-ICPC 2018 沈阳赛区网络预赛 D Made In Heaven(第k短路,A*算法)
  12. 分页 工具类 前后台代码 Java JavaScript (ajax) 实现 讲解
  13. H5页面移动端IOS键盘收起焦点错位
  14. url编码解码的问题(urlencode/quote)
  15. SpringBoot入坑-请求参数传递
  16. FJNU2018低程A 逃跑路线(Lucas + 中国剩余定理 + LGV定理)题解
  17. 【shell编程】之基础知识-输入/输出和重定向
  18. 生成带有表格的word附件和动态赋值
  19. ASP.NET MVC 3 Performance – on par with MVC 2
  20. Mysql 授权远程访问

热门文章

  1. python第五十课——多态性
  2. PHP获取目录下面所有文件和文件夹
  3. Arduino IDE for ESP8266 项目云盒子 (1)AP直接模式
  4. WebService 的CXF框架 WS独立服务之HelloWorld
  5. go标准库的学习-sync互斥
  6. 蒟蒻qxt的sd&#39;日常
  7. 动态分析Android程序
  8. JAVA 第八周学习总结
  9. Android学习之基础知识四-Activity活动1讲
  10. java 面向对象String类