• 2017-2018-1 20179226《Linux内核原理与分析》第二周作业


    Linux内核分析

    通过学习蓝墨云班课上的视频对汇编有了初步的了解

    • 通用寄存器
      EAX:累加器
      EBX:基地址寄存器
      ECX:计数寄存器
      EDX:数据寄存器
      EBP:堆栈基址针
      ESI、EDI:变址寄存器
      ESP:堆栈顶指针
    • 段寄存器
      CS:代码段寄存器。
      DS:数据段寄存器。
      ES:附加段寄存器。
      SS:堆栈段寄存器。
      FS:附加段寄存器。
      GS:附加段寄存器。
    • mov指令及寻址方式
      其中l指32位,b指8位,w指16位,q指64位
      寄存器寻址:```
      movl %eax,%edx
    相当于edx=eax
    **立即寻址**:```
    movl $0x123,%edx
    

    相当于 edx=0x123
    直接寻址:```
    movl 0x123,%edx

    相当于edx=*(int32_t)0x123 
    **间接寻址**:```
    movl (%ebx),%edx 
    

    相当于edx=(int32_t)ebx
    变址寻址:```
    movl 4(%ebx),%edx

    相当于edx=(int32_t)(ebx+4) ,4就是寄存器ebx存的值加4
    ## 实验:反汇编一个简单的c程序
    如果想把代码下载下来,就在Code目录下写代码:
    ![](http://images2017.cnblogs.com/blog/1249682/201710/1249682-20171007105523677-607763477.png)
    通过命令```
    $vi main.c
    ```进入vim输入c语言代码
    ![](http://images2017.cnblogs.com/blog/1249682/201710/1249682-20171007110135958-1852955172.png)
    通过:wq 保存退出
    使用命令编译成汇编代码
    ![](http://images2017.cnblogs.com/blog/1249682/201710/1249682-20171007110542615-747867936.png)
    通过命令```
    $vi main.s
    ```查看汇编代码
    去掉开头带“.”的辅助性语句,得到汇编代码图如下:
    ![](http://images2017.cnblogs.com/blog/1249682/201710/1249682-20171007111754943-495056827.png)
    下面开始栈帧的分析
    ![](http://images2017.cnblogs.com/blog/1249682/201710/1249682-20171007123305193-1231778237.png)
    ![](http://images2017.cnblogs.com/blog/1249682/201710/1249682-20171007123319333-594475493.png)
    首先,从main程序开始执行→对ebp进行压栈→把esp赋予给ebp→esp向下减少4,赋予一个单元格→将数值4存储到单元格中→调用f函数→对ebp进行压栈→把esp赋予给ebp→esp向下增长4,赋予一个单元格→将ebp向上增加8对应单元格内的内容赋予给累加寄存器eax→将eax的内容赋予给esp→调用g函数→对ebp进行压栈→把esp赋予给ebp→将ebp向上增加8对应单元格内的内容赋予给累加寄存器eax→将eax储存的数加6→出栈→返回到f函数的leave命令→撤销函数堆栈→返回到主函数的leave命令→将eax储存的数加3→撤销函数堆栈→返回程序运行值。
  • 相关阅读:
    有36辆自动赛车和6条跑道,没有计时器的前提下,最少用几次比赛可以筛选出最快的三辆赛车?----腾讯2016研发工程师在线模拟笔试题
    10G个整数,乱序排列,要求找出中位数。内存限制为 2G。只写出思路即可
    计算机网络总结(二)
    计算机网络总结(一)
    最小编辑距离
    寻找两个有序数组的中位数
    Linux下几款C++程序中的内存泄露检查工具
    DDIA
    推荐引擎
    Innodb中的事务隔离级别和锁的关系
  • 原文地址:https://www.cnblogs.com/9226ryf/p/7629095.html
Copyright © 2020-2023  润新知