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的中断源

  1. 外部中断:硬盘,时钟,网卡等
  2. 软件中断:软件执行过程中需要系统调用
  3. 异常:软件执行异常,机器检查出的异常

中断处理过程

  • 每个中断或异常都有个中断服务历程(ISR)与之关联
  • x86环境建立这个关联会使用到一个IDT(中断描述符表)
  • 中断程序会产生一个中断号,中断号会在中断描述符表中找到中断门或陷阱门
  • 基于这个中断门或陷阱门,我们会找到段的选择子和段内偏移(offset)
  • 选择子会去GDT(全局描述符表)里找到一个段描述符里面的Base(基址),这个Base+offset就构成了一个中断服务历程的地址
  • 另外段描述符中还有特权级的描述,如CS
  • 用户态和内核态发生中断都会跳到内核态,如果内核态发生中断跳到内核态,就会使用到内核的栈,并压入原栈的地址

系统调用与中断

  • 系统调用是一个特殊的中断,称之为trap或软中断(软件产生的)
  • 需要指定中断号
  • 需要完成用户态和内核态的转换

如何通过make生成执行文件的过程

使用make V=看make的过程,可以看到它首先会调用gcc,然后编译生成.o文件,然后调用ld,将.o文件生成一个可执行程序bootloader和dd,这个过程取决于一个makefile文件

OS学习笔记-4(清华大学慕课)mooc实验一相关推荐

  1. 【OS学习笔记】四十 保护模式十:中断和异常的处理与抢占式多任务对应的汇编代码----动态加载的用户程序/任务二代码

    本文是以下几篇文章对应的微型动态加载的用户程序/任务二代码: [OS学习笔记]三十四 保护模式十:中断和异常区别 [OS学习笔记]三十五 保护模式十:中断描述符表.中断门和陷阱门 [OS学习笔记]三十 ...

  2. 【OS学习笔记】三十九 保护模式十:中断和异常的处理与抢占式多任务对应的汇编代码----动态加载的用户程序/任务一代码

    本文是以下几篇文章对应的动态加载的用户程序/任务一代码: [OS学习笔记]三十四 保护模式十:中断和异常区别 [OS学习笔记]三十五 保护模式十:中断描述符表.中断门和陷阱门 [OS学习笔记]三十六 ...

  3. 【OS学习笔记】三十八 保护模式十:中断和异常的处理与抢占式多任务对应的汇编代码----微型内核汇代码

    本文是以下几篇文章对应的微型内核代码汇编代码: [OS学习笔记]三十四 保护模式十:中断和异常区别 [OS学习笔记]三十五 保护模式十:中断描述符表.中断门和陷阱门 [OS学习笔记]三十六 保护模式十 ...

  4. 【OS学习笔记】三十七 保护模式十:中断和异常的处理与抢占式多任务对应的汇编代码----主引导扇区代码

    本文是以下几篇文章对应的主引导扇区代码汇编代码: [OS学习笔记]三十四 保护模式十:中断和异常区别 [OS学习笔记]三十五 保护模式十:中断描述符表.中断门和陷阱门 [OS学习笔记]三十六 保护模式 ...

  5. 【OS学习笔记】三十六 保护模式十:通过中断发起任务切换----中断任务

    上一篇文章学习了:OS学习笔记]三十五 保护模式十:中断描述符表.中断门和陷阱门 本篇文章接着上一篇文章学习中断任务. 我们在前面文章中一直在说通过中断发起任务切换,本文就是将之前没有说明白的内容:通 ...

  6. 【OS学习笔记】三十五 保护模式十:中断描述符表、中断门和陷阱门

    上一篇文章学习了中断与异常的概念:[OS学习笔记]三十四 保护模式十:中断和异常区别 本片文章接着学习以下内容: 中断描述符表 中断门 陷阱门 1 中断描述符表 我们前面讲了无数次,在实模式下,是由位 ...

  7. 【OS学习笔记】三十四 保护模式十:中断和异常区别

    上几篇文章学习了分页机制的一些原理: [OS学习笔记]三十 保护模式九:段页式内存管理机制概述 [OS学习笔记]三十一 保护模式九:页目录.页表和页三者的关系详解 今天继续学习保护模式下的关于中断与异 ...

  8. 【OS学习笔记】三十三 保护模式九:分页机制对应的汇编代码之---用户程序代码

    本片文章是以下两篇文章: [OS学习笔记]三十 保护模式九:段页式内存管理机制概述 [OS学习笔记]三十一 保护模式九:页目录.页表和页三者的关系详解 对应的用户程序汇编代码. ;代码清单16-2;文 ...

  9. 【OS学习笔记】三十二 保护模式九:分页机制对应的汇编代码之---内核代码

    本片文章是以下两篇文章: [OS学习笔记]三十 保护模式九:段页式内存管理机制概述 [OS学习笔记]三十一 保护模式九:页目录.页表和页三者的关系详解 对应的内核汇编代码. ;代码清单16-1;文件名 ...

  10. 【OS学习笔记】三十 保护模式九:段页式内存管理机制概述

    上几篇文章学习了任务切换相关知识,如下: [OS学习笔记]二十六 保护模式八:任务门-任务切换 [OS学习笔记]二十七 保护模式八:任务切换的方法之----jmp与call的区别以及任务的中断嵌套 今 ...

最新文章

  1. XML DOM 加载函数概述
  2. 语言转4字节数据整型_R语言与RGui平台_数据类型_向量_4
  3. 计算机组成计算题中的术语,计算机组成原理习题——日常记录
  4. Leetcode 94.二叉树的中序遍历 (每日一题 20210712)
  5. ML之回归预测:利用八(9-1)种机器学习算法对无人驾驶汽车参数(2017年的data,18+2)进行回归预测值VS真实值
  6. tensorflow随笔-tf.nn.softplus
  7. oracle 以1开头以9结尾_为什么你看到的价格总以数字“9”结尾?
  8. 谈谈NullableT的类型转换问题
  9. CSS实现的阴影效果
  10. Python之钉钉机器人推送天气预报
  11. 【半译】扩展shutdown超时设置以保证IHostedService正常关闭
  12. 1512. 好数对的数目
  13. 阿里巴巴Android开发手册V1.0.0随手笔记
  14. oracle gis费用,MapGIS 10 for Desktop 标准版_Oracle
  15. Android中的Switch控件
  16. 动量梯度下降法 Momentum
  17. Flutter开发之——序列化失败-have not been migrated to null-safety
  18. python爬取付费漫画_Python爬虫---爬取腾讯动漫全站漫画
  19. Web应用开发技术笔记
  20. vue 首页白屏优化

热门文章

  1. vue3.0+vite跑项目遇到的问题
  2. ps彩色照片变黑白照片
  3. php计算笛卡尔积批量生成电商sku列表
  4. 计算机的记事本和写字板的功能,写字板和记事本的异同
  5. 配置H3C设备无线AP多vlan步骤
  6. android获取经纬度代码
  7. 华硕AC68U无线路由器工作原理
  8. 简单解释:STM32参考手册的地址偏移和复位值
  9. 中国势力主导NGN建设 华为中兴ASB三足鼎立
  10. 苹果手机免越狱群控电脑端控制手机