实验四:使用库函数 API 和 C 代码中嵌入汇编代码两种方式使用同一个系统调用
一、知识概述
宏观上Linux操作系统的体系架构为用户态和内核态。为了减少有限资源的访问和使用冲突,CPU和操作系统必须提供一些机制对用户程序进行权限划分。
Intel x86CPU有四种不同的执行级别,分别是0、1、2、3,数字越小,特权越高。
系统调用也是一种中断,一般来说,进入内核态是由中断触发的。
二、使用库函数 API 和 C 代码中嵌入汇编代码两种方式使用同一个系统调用
1.使用库函数API触发一个系统调用
编写一个time.c的程序,使用编译指令运行一下,输出的是当前系统时间:
2.C代码中嵌入汇编代码触发一个系统调用
有了内嵌汇编的知识就可以用汇编方式触发系统调用获取系统当前时间。编写一个time-asm.c的程序
3. 含两个参数的系统调用范例
(1)先使用库函数API触发rename系统调用
rename.c函数如下:
改名效果如下:
(2)嵌入式汇编代码触发rename系统调用:
rename-asm.c代码如下:
修改效果如下: