• 2019-2020-1 20199327《Linux内核原理与分析》第三周作业


    操作系统是如何工作的

    计算机的三大法宝:

    1.存储程序计算机;

    2.函数调用堆栈机制;

    3.中断机制;

    函数调用堆栈

    堆栈的作用

    1.记录函数调用框架;

    2.传递函数参数,方法:从左到右;

    3.保存返回值的地址;

    4.提供函数内部局部变量的存储空间;

    相关寄存器和操作

    ESP:堆栈指针;

    EBP:基址指针;

    push:栈顶地址减少4个字节,并将操作数放入栈顶存储单元;

    pop:栈顶地址增加4个字节,并将栈顶存储单元的内容放入操作数;

    栈是从高地址向低地址增加的。

    其他关键寄存器

    CS:EIP总是指向下一条的指令地址。

    顺序执行:总是指向地址连续的下一条指令;

    跳转/分支:执行这样的命令时,CS:EIP的值会根据程序需要被修改;

    call:将当前CS:EIP的值压入栈顶,CS:EIP指向被调用函数的入口地址。

    ret:从栈顶弹出原来保存CS:EIP的值,放入CS:EIP中;

    内嵌汇编

    关键字

    asm:是GCC关键字asm的宏定义,是内嵌汇编的关键字。_asm_和asm可以互相替换使用,#define asm asm;

    volatile:是GCC关键字volatile的宏定义,编译器不要优化代码,汇编指令保持原样。_asm_和asm可以互相替换使用,#define volatile volatile;

    语法

    asm volatile

    汇编语言模板:
    
    输出部分:
    
    输入部分:
    
    破坏描述部分
    

    实验

    patch -pl < ../mykernel_for_linux3.9.4sc.patch4

    qemu -kernel arch/x86/boot/bzImage

    搭建实验平台后内核启动效果

  • 相关阅读:
    SQL Functions
    wse 3.0
    mvc2 在 .net 4 下的ValidateInput(false) 无效
    FF3.0 不可以post空
    也谈.NET MVC 2 + ExtJS的部署问题
    ExtJs懒人笔记(2) ExtJs页面布局
    关于算法—— 一维字符串数组之间组合问题的C#实现
    (转)在ASP.NET 中实现单点登录(利用Cache, 将用户信息保存在服务器缓存中)
    XML中配置正则表达式的写法
    .NET MVC 下实现消息推送
  • 原文地址:https://www.cnblogs.com/waxxx/p/11610272.html
Copyright © 2020-2023  润新知