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:

  • 相关阅读:
    imagemagick-图片
    selenium-嘿
    centos命令行连接无线网络
    centos7安装桌面合盖不休眠
    mysql执行命令:ERROR 1820 (HY000): You must reset your password
    编码规范 C++
    Docker使用总结
    JAVA使用总结
    VS IDE 相关
    编程网站总结
  • 原文地址:https://www.cnblogs.com/hyuxin/p/13831835.html
Copyright © 2011-2022 走看看