OS学习笔记-4(清华大学慕课)mooc实验一
C函数调用过程
使用到函数栈,寄存器EBP、ESP(EBP和ESP称为指针寄存器(Pointer Register),主要用于存放堆栈内存储单元的偏移量,用它们可实现多种存储器操作数的寻址方式,为以不同的地址形式访问存储单元提供方便。)
1.首先将调用call函数的函数的一系列的寄存器信息压入栈中
2.调用call函数
3.将call函数内部局部参数压入栈中
4.弹出call内部参数
5.弹出寄存器信息
GCC内联汇编
原因:
将汇编代码放到C语言中是因为,C语言无法完成所有cpu指令,尤其是特权指令,所以只能用汇编代码实现
主要变化:
原汇编代码=********
C语言中:asm volatile(********);
我们gcc编译器会自动将里面的代码转换好,如字符约定:
- “a”=%eax
- “b”=%ebx
- “c”=%ecx
- “d”=%edx
- “S”=%esi
- “D”=%edi
- “0”=same as the first
x86的中断源
- 外部中断:硬盘,时钟,网卡等
- 软件中断:软件执行过程中需要系统调用
- 异常:软件执行异常,机器检查出的异常
中断处理过程
- 每个中断或异常都有个中断服务历程(ISR)与之关联
- x86环境建立这个关联会使用到一个IDT(中断描述符表)
- 中断程序会产生一个中断号,中断号会在中断描述符表中找到中断门或陷阱门
- 基于这个中断门或陷阱门,我们会找到段的选择子和段内偏移(offset)
- 选择子会去GDT(全局描述符表)里找到一个段描述符里面的Base(基址),这个Base+offset就构成了一个中断服务历程的地址
- 另外段描述符中还有特权级的描述,如CS
- 用户态和内核态发生中断都会跳到内核态,如果内核态发生中断跳到内核态,就会使用到内核的栈,并压入原栈的地址
系统调用与中断
- 系统调用是一个特殊的中断,称之为trap或软中断(软件产生的)
- 需要指定中断号
- 需要完成用户态和内核态的转换
如何通过make生成执行文件的过程
使用make V=看make的过程,可以看到它首先会调用gcc,然后编译生成.o文件,然后调用ld,将.o文件生成一个可执行程序bootloader和dd,这个过程取决于一个makefile文件
OS学习笔记-4(清华大学慕课)mooc实验一相关推荐
- 【OS学习笔记】四十 保护模式十:中断和异常的处理与抢占式多任务对应的汇编代码----动态加载的用户程序/任务二代码
本文是以下几篇文章对应的微型动态加载的用户程序/任务二代码: [OS学习笔记]三十四 保护模式十:中断和异常区别 [OS学习笔记]三十五 保护模式十:中断描述符表.中断门和陷阱门 [OS学习笔记]三十 ...
- 【OS学习笔记】三十九 保护模式十:中断和异常的处理与抢占式多任务对应的汇编代码----动态加载的用户程序/任务一代码
本文是以下几篇文章对应的动态加载的用户程序/任务一代码: [OS学习笔记]三十四 保护模式十:中断和异常区别 [OS学习笔记]三十五 保护模式十:中断描述符表.中断门和陷阱门 [OS学习笔记]三十六 ...
- 【OS学习笔记】三十八 保护模式十:中断和异常的处理与抢占式多任务对应的汇编代码----微型内核汇代码
本文是以下几篇文章对应的微型内核代码汇编代码: [OS学习笔记]三十四 保护模式十:中断和异常区别 [OS学习笔记]三十五 保护模式十:中断描述符表.中断门和陷阱门 [OS学习笔记]三十六 保护模式十 ...
- 【OS学习笔记】三十七 保护模式十:中断和异常的处理与抢占式多任务对应的汇编代码----主引导扇区代码
本文是以下几篇文章对应的主引导扇区代码汇编代码: [OS学习笔记]三十四 保护模式十:中断和异常区别 [OS学习笔记]三十五 保护模式十:中断描述符表.中断门和陷阱门 [OS学习笔记]三十六 保护模式 ...
- 【OS学习笔记】三十六 保护模式十:通过中断发起任务切换----中断任务
上一篇文章学习了:OS学习笔记]三十五 保护模式十:中断描述符表.中断门和陷阱门 本篇文章接着上一篇文章学习中断任务. 我们在前面文章中一直在说通过中断发起任务切换,本文就是将之前没有说明白的内容:通 ...
- 【OS学习笔记】三十五 保护模式十:中断描述符表、中断门和陷阱门
上一篇文章学习了中断与异常的概念:[OS学习笔记]三十四 保护模式十:中断和异常区别 本片文章接着学习以下内容: 中断描述符表 中断门 陷阱门 1 中断描述符表 我们前面讲了无数次,在实模式下,是由位 ...
- 【OS学习笔记】三十四 保护模式十:中断和异常区别
上几篇文章学习了分页机制的一些原理: [OS学习笔记]三十 保护模式九:段页式内存管理机制概述 [OS学习笔记]三十一 保护模式九:页目录.页表和页三者的关系详解 今天继续学习保护模式下的关于中断与异 ...
- 【OS学习笔记】三十三 保护模式九:分页机制对应的汇编代码之---用户程序代码
本片文章是以下两篇文章: [OS学习笔记]三十 保护模式九:段页式内存管理机制概述 [OS学习笔记]三十一 保护模式九:页目录.页表和页三者的关系详解 对应的用户程序汇编代码. ;代码清单16-2;文 ...
- 【OS学习笔记】三十二 保护模式九:分页机制对应的汇编代码之---内核代码
本片文章是以下两篇文章: [OS学习笔记]三十 保护模式九:段页式内存管理机制概述 [OS学习笔记]三十一 保护模式九:页目录.页表和页三者的关系详解 对应的内核汇编代码. ;代码清单16-1;文件名 ...
- 【OS学习笔记】三十 保护模式九:段页式内存管理机制概述
上几篇文章学习了任务切换相关知识,如下: [OS学习笔记]二十六 保护模式八:任务门-任务切换 [OS学习笔记]二十七 保护模式八:任务切换的方法之----jmp与call的区别以及任务的中断嵌套 今 ...
最新文章
- XML DOM 加载函数概述
- 语言转4字节数据整型_R语言与RGui平台_数据类型_向量_4
- 计算机组成计算题中的术语,计算机组成原理习题——日常记录
- Leetcode 94.二叉树的中序遍历 (每日一题 20210712)
- ML之回归预测:利用八(9-1)种机器学习算法对无人驾驶汽车参数(2017年的data,18+2)进行回归预测值VS真实值
- tensorflow随笔-tf.nn.softplus
- oracle 以1开头以9结尾_为什么你看到的价格总以数字“9”结尾?
- 谈谈NullableT的类型转换问题
- CSS实现的阴影效果
- Python之钉钉机器人推送天气预报
- 【半译】扩展shutdown超时设置以保证IHostedService正常关闭
- 1512. 好数对的数目
- 阿里巴巴Android开发手册V1.0.0随手笔记
- oracle gis费用,MapGIS 10 for Desktop 标准版_Oracle
- Android中的Switch控件
- 动量梯度下降法 Momentum
- Flutter开发之——序列化失败-have not been migrated to null-safety
- python爬取付费漫画_Python爬虫---爬取腾讯动漫全站漫画
- Web应用开发技术笔记
- vue 首页白屏优化