zoukankan      html  css  js  c++  java
  • 2019-2020-1 20199321《Linux内核原理与分析》第二周作业

    第一部分 基础知识

    寄存器的组成

    以16位的8086 CPU的寄存器为例,可分为三类。

    通用寄存器

    数据寄存器:AX(累加器),BX(基地址寄存器),CX(计数器寄存器),DX(数据寄存器)。均可当做两个独立的8位寄存器来使用。
    指针寄存器:SP(堆栈指针寄存器)、BP(基指针寄存器)
    变址寄存器:SI(源变址寄存器)、DI(目的变址寄存器)

    控制寄存器

    IP(指令指针寄存器),FLAG(标志寄存器)

    段寄存器

    CS(代码段寄存器),DS(数据段寄存器),SS(堆栈段寄存器),ES(附加段寄存器)

    在32位中,一般会在开头加E;在64位中,般会在开头加R。

    常用汇编指令

    末位是 b 指8位,末位是 w 指16位,末位是 l 指32位,末位是 q 指64位
    “从前往后看”
    寄存器寻址: movl %eax, %edx;
    立即寻址: movl $0x123, %edx;
    直接寻址: movl 0x123, %edx;
    间接寻址:movl (%eax), %edx;
    变址寻址:movl 4(%eax), %edx;(在原地址上加4)

    pushl %eax 相当于 subl $4, %esp; movl %eax, (%esp);
    popl %eax 相当于 movl (%esp), %eax; subl $4, %esp;

    第二部分 实验总结

    :wq命令在按“ESC”后输入;注意g / .s*/的输入

    实验分析

    leave指令用于撤销函数堆栈,相当于movl %ebp, %esp; popl %ebp;
    enter指令用于撤销函数堆栈,相当于pushl %ebp; movl %esp, %ebp;

    要理解代码的含义是什么,首先要知道ESP、EBP、EIP寄存器中要存储的内容是什么,结合在学习C语言时堆栈的理解来理解。

  • 相关阅读:
    vue-lazy-component
    vue修饰符sync
    vue-router-auto动态生成路由插件
    我的第一个WebAPI程序
    GitHub界面初识
    新闻API接口
    childNodes属性 和 nodeType属性
    接口测试总结
    网站被k
    js声明引入和变量声明和变量类型、变量
  • 原文地址:https://www.cnblogs.com/20199321zjy/p/11531377.html
Copyright © 2011-2022 走看看