深入理解计算机系统之旅(三)程序的机器级表示

1、前言

我们在使用高级语言比如C语言、OBjective-C以及Java等编写程序时,我们被屏蔽了程序的具体机器级的实现,这个屏蔽的工具就是编译器(Java是解释执行,但是它同样也需要将文本的源码进行一定的翻译,转换为字节码)。

未完待续

时间: 2024-09-22 00:07:32

深入理解计算机系统之旅(三)程序的机器级表示的相关文章

深入理解计算机系统之旅(五)优化程序性能

1.前言 好的算法和数据结构在编写高性能的程序时固然重要,但是却不是全部,如果我们想要写出性能更好的程序就需要了解编译器是否如何工作和优化我们的代码的,当然并不是要求所有的程序员都去了解和掌握此技能,仅仅对程序性能要求比较苛刻在现有情况下已经无法通过其他方法优化的情况下才会凸显重要性. 未完待续

深入理解计算机系统之旅(一)计算机系统漫游

1.计算机系统是什么? 我们直观的可以看到的计算机系统就是一台电脑,包括主机.显示器.键盘鼠标,然后显示器上会显示不同界面,用鼠标点击,键盘输入界面就会相应操作. 2.深入一点,他们是如何工作的? 计算机系统是由硬件和系统软件组成,它们共同工作来运行应用程序. 3.再深入一点,硬件是什么?系统软件是什么?应用程序是什么? 硬件是组成计算机系统的基础,大家耳熟能详的就是CPU.内存.硬盘.主板等. 系统软件是运行在硬件之上的一层控制软件,就是我们经常听到的Windows XP.WIN7.Linux

深入理解计算机系统之旅(二)信息在计算机中的表示和处理

1.前言 计算机只能处理和认识0和1,但是0和1的位数多了,就能对现实世界的各种信息进行编码,同样的0和1的序列在不同场景和上下文中的意义也不尽相同,所以通过一定的规则进行合理的编码和解码,然后就能将现实世界的信息放在计算机中运算和处理,最后按照预先设定好的程序将结果反馈给用户. 2.信息的存储 3.整数的表示 4.整数的运算 5.浮点数(小数) 6.小结 未完待续

深入理解计算机系统之旅(四)处理器(CPU)的体系结构

1.前言 处理器是非常复杂的系统,它不是一蹴而就的,它是经过不断的升级.更新.设计之后的产物,并且现在还在保持着不断的更新. 处理器只能执行一系列的指令,每条指令都只是执行某个简单的操作,比如数字相加.指令同样也需要被编码,这些编码是由一定规则的0和1的二进制位组成,这些指令编码的统称就是处理器的指令集. 未完待续

linux基础-深入理解计算机系统疑问

问题描述 深入理解计算机系统疑问 为什么说代码段总是从0x08048000开始,这句话说的是所有程序的代码段吗? 解决方案 对于所有进程来说,代码都是从同一固定地址开始,如Linux系统通常从0x08048000开始代码段(如前所述,从地址0到代码段起始地址的部分通常为操作系统保留区).代码及只读数据区是直接按照可执行目标文件的内容初始化的,与目标文件中的代码段(.text).初始化段(.init)及只读数据段(.rodata)相对应. 解决方案二: <深入理解计算机系统>(二)深入理解计算机

深入理解计算机系统-之-数值存储(二)--C程序打印变量的每一字节或者位

大端与小端 前面我们提到了依据CPU端模式的不同,数据的存储顺序也不一样. 采用大小模式对数据进行存放的主要区别在于在存放的字节顺序,BE big-endian 大端模式 ,最直观的字节序 ,地址低位存储值的高位,地址高位存储值的低位 ,不需要考虑对应关系,只需要把内存地址从左到右按照由低到高的顺序写出 ,把值按照通常的高位到低位的顺序写出 ,两者对照,一个字节一个字节的填充进去 LE little-endian 小端模式,最符合人的思维的字节序,地址低位存储值的低位,地址高位存储值的高位 ,怎

深入理解计算机系统-之-内存寻址(五)--页式存储管理

前景回顾 前面我们讲解了操作系统段式存储管理的主要内容. 32位,在保护方式下,其能够访问的线性地址空间可达4GB,而且允许几乎不受存储空间限制的虚拟存储器程序.虚拟存储器地址空间能够可达64TB.它还提供了复杂的存储管理和硬件辅助的保护机构和增加了支持多任务操作系统的特别优化的指令.实际上,64TB的虚拟地址空间是有磁盘等外部存储器的支持下实现的.在编写程序是可以放在磁盘存储器上,但在执行时,必须把程序加载到物理存储器中.而存储器管理就是要将46位虚拟地址变换成32位物理地址. 将程序分成不同

risc-关于《深入理解计算机系统》中 CISC 和 早期的RISC 的区别

问题描述 关于<深入理解计算机系统>中 CISC 和 早期的RISC 的区别 <深入理解计算机系统>(中文第2版)中236页对比 CISC 和 早期的RISC 的区别中有这样一段:CISC:对机器级程序来说实现细节是不可见的.ISA 提供了程序和如何执行程序之间的清晰的抽象.早期的RISC:对机器级程序来说实现细节是可见的.有些 RISC 机器禁止某些特殊的指令序列,而有些跳转要到下一条指令执行完了以后才会生效.编译器必须在这些约束条件下进行性能优化. 解决方案 这个真的很有难度,

c语言-深入理解计算机系统 8.3题

问题描述 深入理解计算机系统 8.3题 #include int main() { if(fork()==0){ printf("a"); } else{ printf("b"); waitpid(-1,NULL,0); } printf("c"); exit(0); 求问这个程序的可能输出序列? 答案给出了acbc,bcac,abcc,bacc四种答案. 但是我觉得不应该有四种,因为fork以后有两个进程,但是父进程会遇到waitpid,这个必