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

    实验一

    1.实验步骤

    1. 使用vi main.c命令打开文本编辑器VIM,将C语言代码复制保存。
    2. gcc main.c 编译,会生成一个目标文件a.out,执行之后没有输出信息,通过echo $?查看程序返回值。
    3. gcc -S -o main.s main.c -m32把main.c编译成一个汇编代码,将多余的辅助信息去除后得到汇编代码。

    2.实验分析

    3.实验总结

    此实验主要是通过汇编一个简单的C语言程序并分析其汇编指令执行过程来理解“计算机究竟是如何工作的”,在指令执行过程中,很重要的一个寄存器就是EIP指令指针寄存器,它会自动地指向下一条要执行的指令地址。堆栈操作过程中非常重要的两个寄存器就是EBP基址指针寄存器和ESP栈顶指针寄存器,所有出栈入栈的操作都要靠它们来完成。汇编语言是和机器语言类似的语言,能充分体现出计算机执行指令的逻辑。计算机先将程序编译成计算机能读懂的语言,再一条条取指令来执行,直至指令执行完毕。

    问题及解决

    1.变址寻址

    Q:对movl 8(%ebp),%eax指令的不理解
    A:这是变址寻址,即在间接寻址的基础上,在原地址上加一个立即数8,相当于ebp的内容加上8这个地址里面的内容赋给eax。

    2.EIP寄存器

    Q:既然EIP是自动加1,执行下一条指令,那它是什么时候执行的呢?在当前指令还未结束的时候?
    A:

  • 相关阅读:
    javaXML文件的写入之DOM和DOM4J
    javaXML文件解析之DOM4J实操
    java解析XML文件四种方法之引入源文件
    java文件传输之文件编码和File类的使用
    java中Collections.sort()方法实现集合排序
    java集合的contains(obj)方法的实现
    java集合及其方法
    java基本数据类型及其包装类
    java类的种类
    java类定义、变量类型、构造函数
  • 原文地址:https://www.cnblogs.com/hyuxin/p/13831835.html
Copyright © 2011-2022 走看看