操作系统
文章平均质量分 55
m0_37962600
这个作者很懒,什么都没留下…
展开
-
详解Linux系统调用过程
Linux系统调用的层次如下: 用户程序-------->C库(即API):INT 0x80------------>system_call------------>系统调用服务例程--------->内核程序 ***API即就是系统提供的C库。系统调用是通过软中断指令INT 0x80实现的。(1)INT 0x80:被封装在C库函数中,执行此指令会让新系统跳转到...原创 2018-04-14 20:34:18 · 2588 阅读 · 0 评论 -
深入函数调用堆栈-----程序在函数执行前都干了什么
每个函数在开始前都会有一段固定的代码,这些固定的代码主要做三件事:1.主调方栈底地址入栈,让ebp指向当前函数栈底;2.通过esp的减等操作给被调函数开辟栈桢;3.将esp和ebp之间所有的栈内存全部初始化;...原创 2018-04-06 14:59:08 · 340 阅读 · 0 评论 -
深入函数调用堆栈--------具体过程详解
通过下面的简单的程序来理解一下函数在调用过程中具体都干了什么:首先我们先来了解一些简单的指令:mov 用来移内存的值 lea 移地址 push 从栈顶入栈pop 从栈顶出栈 ...原创 2018-04-06 16:42:07 · 1482 阅读 · 0 评论 -
程序的编译链接过程详解
首先我们简单了解一下内存布局:程序的编译分为:1.预处理:主要处理源代码文件中的以“#”开始的预编译指令(经过预编译后的.i文件不包含任何宏定义,因为所有的宏已经被展开,并且包含的文件也已经被插入到.i文件中)2.编译:将预处理完的文件进行一系列词法分析,语法分析,语义分析以及优化后产生相应的汇编代码文件(生成.s文件)3.汇编:汇编器将汇编代码转变成机器可以执行的指令,每一个汇编语句几乎对应一条...原创 2018-04-06 19:32:14 · 725 阅读 · 0 评论