计算机系统:深入理解计算机系统--第三章摘抄

本文介绍了计算机系统中两个重要的抽象概念:指令集体系结构(ISA)及内存系统的虚拟地址抽象。详细探讨了ISA的设计原则,如指令长度变化及其对程序大小的影响,以及指令编码的唯一可译性。同时,还介绍了操作系统如何管理虚拟地址空间。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考材料:深入理解计算机系统(第3章

1. (3.2.1)计算机machine-level programming重要的两类抽象:

一个重要抽象,是将format and behavior of a machine-level program抽象形成instruction set architecture,即ISA(指令集体系结构)

对于ISA,要有以下基本观念:IA32的ISA和x86-64的ISA,以及其他大多数ISA,在抽象时都将指令按顺序执行抽象。但是处理器的硬件可以并发地执行许多指令,并且采用了一些safeguards来确保并行执行之后的结果和一条一条顺序执行的结果一样。


第二个重要抽象,是将整个计算机中的memory system用虚拟地址来抽象,使得memory system就好像一个“连续”的字节块。要有的基本观念是,这个抽象对应的实际计算机basis是一些分离的hardware memories,和operating system software(?)


2.(3.2.1)

操作系统负责管理虚拟地址空间,将虚拟地址翻译成实际processor memory中的物理地址


3.(3.2.2)

当一个源文件生成了'.o'的目标二进制文件后,无法直接查看。

但是还是有个查看目标代码文件内容的方法,就是对'.o'目标文件使用反汇编器(disassembler)。它的输出还是二进制文件,但是,反汇编器将这些二进制按照指令进行了分段。让我们知道哪一段是一个指令(格式上与汇编器产生的汇编文件一样,分行的)


关于ISA的指令(以IA32为例),我们要有以下基本观念:都是和编码中的基本思想相关

一是,ISA中每条指令占用字节数不等,常用的指令所需的字节数少,不太常用的指令的字节数多--》这样的话,相对于每条指令占用等长字节数的ISA,这种占用字节数不等的ISA为程序产生的总空间要更少。

二是,ISA中的指令在设计时,达到了一个效果,对于一个二进制指令串,从某个字节开始,译码的结果是唯一的,这是达到了编码理论中“唯一可译性”的要求。(如何为指令设计编码可以达到“唯一可译性”呢?可以看姜丹老师的《信息论》)。

(我想。大概正是反汇编器正是利用了唯一可译性,从而将一串指令字节序列分割开来的。)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值