C语言代码: int g(int x) { return x + 5; } int f(int x) { return g(x); } int main(void) { return f(5) + 1; } 反汇编代码: g: pushl  %ebp                   将ebp的值压栈,同时esp向下移动4个字节 movl   %esp, %ebp         ebp也指向esp指的位置 movl   8(%ebp), %eax    将ebp变址寻址8即向上移动8个字节,…
linux 基础入门 课程总结 一.linux系统简介 linux操作系统 整个计算机可以分为 硬件 内核 系统调用 应用程序 操作系统就属于内核和系统调用这两部分 操作系统历史发展 批处理操作系统 20世纪50年代 交互式操作系统 20世纪60年代 linux本身只是操作系统的内核,内核是使其他程序能够运行的基础 linux和Windows操作系统的区别 免费与收费 支持方式 Windows由微软官方提供重要支持和服务 linux大部分为开源自由软件 安全性 相比之下linux更加安全 界面…
2019-2020-1 20199303第二周作业 1.汇编与寄存器的学习 寄存器是中央处理器内的组成部份.寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令.数据和位址.在中央处理器的控制部件中,包含的寄存器有指令寄存器(IR)和程序计数器(PC).在中央处理器的算术及逻辑部件中,包含的寄存器有累加器(ACC). 寄存器是内存阶层中的最顶端,也是系统获得操作资料的最快速途径.寄存器通常都是以他们可以保存的位元数量来估量,寄存器通常都用来意指由一个指令之输出或输入可以直接索引到的暂存器群组.…
2019-2020-1 20199303 <Linux内核原理分析> 第一周作业 1. 环境准备 在众多的Linux发行版中,Ubuntu,小红帽还有类Unix系统的BSD系统,我选择了目前比较流行的Ubuntu.Ubuntu的安装考虑了做双系统或者使用虚拟机安装,因为暂时没有性能需求且使用虚拟机的插件进行主系统和虚拟机系统的交互更为方便,就使用了VMware作为虚拟机安装了操作系统. 写博客的选择markdown标记语言,编辑器使用Markdownpad 2,因其可以实时显示html下的显示…
Linux内核设计(第一周)——从汇编语言出发理解计算机工作原理 计算机工作原理 汇编指令 C语言代码汇编分析 by苏正生 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 从2月22日起,本学期的linux课程开始了.通过这两天的学习,觉得孟宁老师讲的真不错,条理清晰,举例适当.本周从计算机工作原理出发,回顾了冯诺依曼计算机结构,也回顾了汇编寄存器.汇编指令.C语言程序的汇编分析技巧,很…
Linux内核如何装载和启动一个可执行程序 一.ELF可执行文件格式 ELF格式分类: 可重定位文件:用来和其他object文件一起创建可执行文件和共享文件 可执行文件:指出应该从哪里开始执行 共享文件:主要是.so文件,用来被链接编辑器和动态链接器链接 (1)对ELF头的描述告诉系统如何创建一个进程的内存映像,section头表包含了描述文件sections的信息.当创建或增加一个进程映像时,理论上它会把 程序段拷贝到虚拟内存中某个段 (2)ELF文件的头部规定了许多与二进制兼容性相关的信息.…
计算机是如何工作的? 存储程序计算机工作模型,计算机系统最最基础性的逻辑结构: 函数调用堆栈,高级语言得以运行的基础,只有机器语言和汇编语言的时候堆栈机制对于计算机来说并不那么重要,但有了高级语言及函数,堆栈成为了计算机的基础功能: enter --pushl %ebp --movl %esp,%ebp leave --movl %ebp,%esp --popl %ebp 函数参数传递机制和局部变量存储 中断,多道程序操作系统的基点,没有中断机制程序只能从头一直运行结束才有可能开始运行其他程序.…
本科期间,学校开设过linux相关的课程,当时的学习方式主要以课堂听授为主.虽然老师也提供了相关的学习教材跟参考材料,但是整体学下来感觉收获并不是太大,现在回想起来,主要还是由于自己课下没有及时动手实践.练习与总结.这几天又重新温习了一下实验楼各章节的基础实验课程,发现自己还是有好多基础命令掌握的不太牢固.另外,在参考对比了第一节——linux简介中给出的linux学习路径之后,发现自己之前的学习方式与方法存在很多的不足与弊端,以至于走了一些弯路. 实验楼的linux基础入门(新版)分成十七个小…
前言 本周对实验楼的Linux基础入门进行了学习,目前学习到实验九完成到挑战二. 学习和实验内容 快速学习了Linux系统的发展历程及其简介,学习了下的变量.用户权限管理.文件打包及压缩.常用命令的和crontab指令. 学习流程图衔接如下: https://graph.baidu.com/thumb/v3/2928286388,1126100969.jpg 简要的学习图 遇到的问题 备份日志 在学习中也不断遇到一些问题.最大的难题在挑战二备份日志中,如何对vim编辑器进行操作就是一个问题.在之…
Linux内核原理与分析 - 第一周作业 实验1 Linux系统简介 Linux历史 1991 年 10 月,Linus Torvalds想在自己的电脑上运行UNIX,可是 UNIX 的商业版本非常昂贵,于是他基于MINIX开发了初版的Linux.在之后越来越多的人加入其中,开发Linux. Linux与Windows的不同 Linux: 免费 支持开源自由软件 安全性较强 主要使用命令行 系统可定制 多用户和用户和用户组的规划 Linux学习步骤 Linux初级 Linux系统安装 Linux…