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个字节,…
冯诺依曼体系结构 核心思想 1.冯诺依曼是:数字计算机的数制采用二进制:计算机应该按照程序顺序执行. 2.采用二进制作为计算机数值计算的基础,以0.1代表数值.不采用人类常用的十进制计数方法,二进制使得计算机容易实现数值的计算. 3.程序或指令的顺序执行,即预先编好程序,然后交给计算机按照程序中预先定义好的顺序进行数值计算. 汇编语言的五种寻址模式 ·        寄存器寻址 registermode: %寄存器  例如:%edx 访问寄存器edx ·        立即寻址 immediat…
我使用的c语言代码是: int g(int x) { return x + 1; } int f(int x) { return g(x); } int main(void) { return f(6) + 3; } 使用实验楼的linux环境得到的汇编代码如下: 1 g: 2 pushl %ebp 3 movl %esp, %ebp 4 movl 8(%ebp), %eax 5 addl $1, %eax 6 popl %ebp 7 ret 8 f: 9 pushl %ebp 10 movl…
计算机是如何工作的? 存储程序计算机工作模型,计算机系统最最基础性的逻辑结构: 函数调用堆栈,高级语言得以运行的基础,只有机器语言和汇编语言的时候堆栈机制对于计算机来说并不那么重要,但有了高级语言及函数,堆栈成为了计算机的基础功能: enter --pushl %ebp --movl %esp,%ebp leave --movl %ebp,%esp --popl %ebp 函数参数传递机制和局部变量存储 中断,多道程序操作系统的基点,没有中断机制程序只能从头一直运行结束才有可能开始运行其他程序.…
Linux内核设计(第一周)——从汇编语言出发理解计算机工作原理 计算机工作原理 汇编指令 C语言代码汇编分析 by苏正生 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 从2月22日起,本学期的linux课程开始了.通过这两天的学习,觉得孟宁老师讲的真不错,条理清晰,举例适当.本周从计算机工作原理出发,回顾了冯诺依曼计算机结构,也回顾了汇编寄存器.汇编指令.C语言程序的汇编分析技巧,很…
刘蔚然 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000] WEEK ONE(2.22——2.28)计算机是如何工作的? [基本的汇编程序工作原理] SECTION 1 存储程序计算机 1.1冯诺依曼体系结构:即具有存储程序的计算机体系结构 目前大多数拥有计算和存储功能的设备(智能手机.平板.计算机等)其核心构造均为冯诺依曼体系结构 从硬件来看 CPU与内存通过主线连接,CPU上的IP(可…
杨舒雯 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 课程内容 1.诺曼依体系结构 诺曼依体系结构等于程序存储计算机 2.x86汇编基础 x86寄存器 通用寄存器 段寄存器 常用汇编指令 作业部分 实验内容 实验部分(以下命令为实验楼64位Linux虚拟机环境下适用,32位Linux环境可能会稍有不同) 使用 gcc –S –o main.s main.c -m32 命令编译成汇编代码…
linux 基础入门 课程总结 一.linux系统简介 linux操作系统 整个计算机可以分为 硬件 内核 系统调用 应用程序 操作系统就属于内核和系统调用这两部分 操作系统历史发展 批处理操作系统 20世纪50年代 交互式操作系统 20世纪60年代 linux本身只是操作系统的内核,内核是使其他程序能够运行的基础 linux和Windows操作系统的区别 免费与收费 支持方式 Windows由微软官方提供重要支持和服务 linux大部分为开源自由软件 安全性 相比之下linux更加安全 界面…
第一周 计算机是如何工作的 第一节 存储程序计算机工作模型 1.冯·诺依曼结构模型:冯·诺依曼结构也称普林斯顿结构,是一种将程序指令存储器和数据存储器合并在一起的存储器结构.程序指令存储地址和数据存储地址指向同一个存储器的不同物理位置,因此程序指令和数据的宽度相同. 2.CPU可以抽象成一个for循环,总是从内存中执行下一条指令. 内存:保存指令数据 CPU:解释执行指令.数据 内存与CPU通过总线连接. API:应用程序编程接口 ABI:二进制(指令编码)接口 例如:32位计算机X86,EIP…
LINUX内核分析第一周学习总结——计算机是如何工作的 张忻(原创作品转载请注明出处) <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.汇编代码的工作过程 1.实验过程 int a(int x) { ; } int b(int x) { return a(x); } int main(void) { ) + ; } 汇编代码如下: 2.代码分析 二.计算机工作的过程 工作的大致过程是:用户将编制好的程序通过…