zoukankan      html  css  js  c++  java
  • 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→撤销函数堆栈→返回程序运行值。
  • 相关阅读:
    axios取消请求
    echarts常用图表配置
    Vue指令限制输入框输入整数小数
    小程序商品飞入购物车组件
    webpack按测试和生产环境进行编译
    地图画线添加标签
    vue-element-admin 动态侧边栏
    html2canvas 和浏览器打印
    echarts 指定某段曲线颜色
    列出表结构
  • 原文地址:https://www.cnblogs.com/9226ryf/p/7629095.html
Copyright © 2011-2022 走看看