zoukankan      html  css  js  c++  java
  • 通过反汇编C语言小程序学习Liunx汇编语言

    大家好!    我是来自山东师范大学的吴乐。
        今天在《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000 第一单元学习了一些基本的汇编语言

        现在我分享一下我的学习历程,本次课程的目的是通过反汇编一段简单的小程序学习基本汇编指令。

        不废话了,上图
        第一步:
     
    首先在Code目录中编写一段简单的C语言小程序,不涉及输入输出,代码如下。

      • int g(int x)
      • {
      •   return x + 1;
      • }
      • int f(int x)
      • {
      •   return g(x);
      • }
      • int main(void)
      • {
      •   return f(6) + 1;
      • }

    第二步

    gcc –S –o main.s main.c -m32

    汇编结束后打开如图所示。

    第三步:

    去除一些链接之后,得到了干净的汇编代码。

    第四步:
    堆栈的调用过程(设初始ebp为0位置每次减4字节相当于升1个标号,EIP逻辑对应代码的行号):
    调用变化如下
    main                                                  f                                                            g                                                 f                    main
    EIP:18   19    20    21    22    23        9     10     11    12       13     14      15      2     3     4      5       6      7     8    16   17   24     25   26
    ebp:0    0      1      1      1       1        1      1       4      4        4        4       4       4     4     7      7       7      4     4     1     1     1      0     ...
    esp:0     1      1      2      2       3       3      4       4      5        5        5       6       6     7     7      7       7      6     5     3     2     2       0     ...
    eax:0     0      0      0      0       0       0      0       0      0        6        6       6       6     6     6      6       7      7     7     7     7     8       8     8
    栈内的元素按先后顺序分别为:ebp0    6   eip23  ebp1   6   eip15  ebp4

    总结:计算机的工作原理与机制
    可见,计算机的工作流程也是取指执行的过程。
    其次,它是在顺序执行基础上加入适当的跳转机制。
    主存的内容必须载入不同寄存器中cpu才能进行处理。
    最后,它实际上是通用图灵机的具体实现,并把控制与储存部分封装为CPU处理中心。

  • 相关阅读:
    FireFox/Chrome不支持在前台js读后台Attributes.Add("DefaultValue")的属性
    IIS Web怪问题: Access is denied due to invalid credentials.
    转:OWC学习笔记电子表格(Spreadsheet)风格属性设置
    最全的CSS浏览器兼容问题整理(IE6.0、IE7.0 与 FireFox)
    转:[网站安全]避免在站点中通过URL参数做重定向
    [SQL Server 2005 BI]在.NET中创建SQL 2005 KPI
    即使asp:TreeView有几万个节点,也让IE不死的解决方法
    Visual Totals in MDX and Role Security
    css hack
    让Updatepanel中的控件触发整个页面Postback
  • 原文地址:https://www.cnblogs.com/wule/p/4348554.html
Copyright © 2011-2022 走看看