首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

实战汇编语言与 C 语言之间相互调用

本文,我们就来详细介绍,如何在 linux 环境下实现 C 语言与汇编语言的相互调用。 2. linux 系统调用的实现 — int 80h 中断 2.1....此前我们已经介绍过,由于系统调用运行在 ring0 特权级,ring3 特权级的用户态进程必须通过四种调用门之一进行调用: 调用门 中断门 陷阱门 任务门 利用调用门实现特权级间跳转(上) — 原理篇 linux...系统调用完成相应功能,将返回值存入 EAX,返回到中断处理函数 中断处理函数返回到 API 中 API 将 EAX 返回给应用程序 因此,我们按照上述步骤设置寄存器、触发 80h 号中断就可以实现在汇编语言中调用 linux...附录2 — 汇编调用系统调用参数 汇编调用 linux 系统调用参数 eax Name Source ebx ecx edx esx edi 1 sys_exit kernel/exit.c int -...const char * const char * - - - 39 sys_mkdir fs/namei.c const char * int - - - 40 sys_rmdir fs/namei.c

1.7K20

虚拟文件系统

Linux系统中,可以使用多种文件系统来挂载不同的设备,如 ext2、ext3、nfs等等。...虚拟文件系统抽象数据结构 Linux奉行了Unix的理念:一切皆文件,比如一个目录是一个文件,一个设备也是一个文件等,因而文件系统在Linux中占有非常重要的地位。...注册文件系统 Linux为了支持不同的文件系统而创造了虚拟文件系统,虚拟文件系统更像一个规范(或者说接口),真实的文件系统需要实现虚拟文件系统的规范(接口)才能接入到Linux内核中。...open_namei() 函数会返回一个 dentry结构,就是对应文件路径的 dentry结构。...所以 open_namei() 函数才是打开文件的核心函数,其实现如下: struct dentry * open_namei(const char * pathname, int flag, int

1.5K30
领券