zoukankan      html  css  js  c++  java
  • 20189205 《Linux内核原理与分析》第二周作业

    反编译

    在实验楼中我编写了如下代码:

    通过gcc编译,得到了如下汇编代码:



    将其简化为可见部分后可得到如下汇编代码:

    5	g:
    8		pushl 	    %ebp
    11		movl  	    %esp,%ebp
    13		movl 	    8(%ebp),%eax
    14		addl	    $666,%eax
    15		popl	    %ebp
    18		ret
    24	f:
    27		pushl 	    %ebp
    30		movl  	    %esp,%ebp
    32		subl	    $4,%esp
    33		movl	    8(%ebp),%eax
    34		movl	    %eax,(%esp)
    35		call	    g
    36		leave
    39		ret
    45	main:
    48		pushl	    %ebp
    51		movl  	    %esp,%ebp
    53		subl	    $4,%esp
    54		movl	    $9205,(%esp)
    55		call	    f
    56		addl	    $2018,%eax
    57		leave
    60		ret 
    

    运用本周视频所教,对此段代码进行分析,可以发现其堆栈结构变化如下:

    分析堆栈变化,可以看出此段代码的功能是进行9205+666+2018的运算。

    问题与处理

    在完成本周测试时出现了以下问题:
    测试5 在调用动态库libmymath.so用gcc编译后,可执行程序运行时shell报错说无法找到共享库:

    经过在网上查阅资料,发现原因是生成的动态库不在系统默认的库文件夹中,使用mv将动态库libmymath.so移动到/usr/lib路径后问题解决。

  • 相关阅读:
    WeUI——switch开关转换
    WeUI——单选框
    WeUI——CheckBox表单复选框
    WeUI——表单输入框状态
    WeUI——表单验证码
    详细介绍 C# 中的方法和参数
    C# 中类的基本概念
    C# 中的类型和变量
    学习 C# 从 Hello World 开始吧
    C# 和 .NET Core 的关系
  • 原文地址:https://www.cnblogs.com/hzj20189205/p/9824751.html
Copyright © 2011-2022 走看看