• 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

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

  • 相关阅读:
    输入任意个数字求和的小程序
    两个小的java程序,用于练习java基本语法
    《大道至简》第一,二章读后感
    搜索
    Dijkstra模板
    图论
    SPFA模板
    HDU 5114 Collision(扩展欧几里得) xgtao
    BZOJ 1001 狼抓兔子 (最大流转最短路) xgtao
    Codeforces 697C Lorenzo Von Matterhorn(严格二叉树的LCA) xgtao
  • 原文地址:https://www.cnblogs.com/waxxx/p/11610272.html
Copyright © 2020-2023  润新知