深入理解计算机系统

深入理解计算机系统

ID:8844369

大小:21.12 KB

页数:4页

时间:2018-04-09

深入理解计算机系统_第1页
深入理解计算机系统_第2页
深入理解计算机系统_第3页
深入理解计算机系统_第4页
资源描述:

《深入理解计算机系统》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、1.在Unix系统上,从源文件到目标文件的转化是由编译器驱动程序完成的:unix>gcc–ohellohello.c这个翻译过程可分为四个阶段完成(预处理器、编译器、汇编器和链接器),这四个阶段的程序一起构成了编译系统。预处理阶段:预处理器根据以字符#开头的命令,修改原始的C程序。比如hello.c中第一行的#include命令告诉预处理器读取系统头文件stdio.h的内容,并把它直接插入到程序文本中。结果就得到了另一个C程序,通常是以.i作为文件扩展名。编译阶段:编译器将文本文件hello.i翻译成文本文件hello.s,它包含一个汇编语

2、言程序。汇编语言程序中的每条语句都以一种标准的文本格式确切的描述了一个低级机器语言指令。汇编语言是非常有用的,因为它为不同高级语言的不同编译器提供了通用的输出语言。例如,C编译器和Fortran编译器产生的输出文件用的都是一样的汇编语言。汇编阶段:接下来,汇编器将hello.s翻译成机器语言指令,把这些指令打包成一种叫做可重定位目标程序的格式,并将结果保存在目标文件hello.o中。hello.o文件是一个二进制文件,它的字节编码是机器语言指令而不是字符。链接阶段:hello程序调用了printf函数,它是每个C编译器都会提供的标准C库中的一个函数。prin

3、tf函数存在于一个名为printf.o的单独的预编译好了的目标文件中,而这个问题件必须以某种方式合并到我们的hello.o程序胡总。链接器就负责处理这种合并。结果就得到hello文件,它是一个可执行目标文件,可以被加载到内存中,由系统执行。2.每个I/O设备都通过一个控制器或适配器与I/O总线相连。控制器和适配器之间的区别主要在于它们的封装方式。控制器是置于I/O设备本身的或者系统的主印制电路板(主板)上的芯片组,而适配器则是一块插在主板插槽上的卡。无论如何,它们的功能都是在I/O总线和设备之间传递信息。3.主存(DRAM)高速缓存(SRAM)4.文件时对I

4、/O设备的抽象表示,虚拟存储器是对主存和磁盘I/O设备的抽象表示,进程则是对处理器、主存和I/O设备的抽象表示。5.字:每台计算机都有一个字长,指明整数和指针数据的标称大小(nominalsize)。因为虚拟地址是以这样的一个字来编码的,所以字长决定的最重要的系统参数就是虚拟地址空间的最大大小。6.对于跨越多字节的程序对象,我们必须建立两个规则:这个对象的地址是什么,以及在存储器中如何排列这些字节。在几乎所有的机器上,多字节对象都被存储在连续的字节序列,对象的地址为所使用字节中最小的地址。7.右移操作:一般而言,机器支持两种形式的右移:逻辑右移和算术右移。逻

5、辑右移在左端补K个0.算术右移是在左端补k个最高有效位的值。8.C语言标准并没有明确定义应该使用哪种类型的右移。对于无符号数据(也就是以限定词unsigned声明的整型对象),右移必须是逻辑的。而对于有符号数据(默认的声明的整型对象),算术的或者逻辑的右移都可以。不幸的是,这就意味着任何假设一种或者另一种右移形式的代码都潜在着可移植性的问题。然而实际上,几乎所有的编译器/机器组合都对有符号数据使用算术右移,且许多程序员也都假设机器会使用这种右移。另一方面,Java对于如何进行右移有明确的定义。表达式x>>k会将x算术右移k个位置,而x>>>k会对x做逻辑右移

6、。1.对于一个由w位组成的数据类型,如果要移动k>=w位会得到什么结果呢?例如,在一个32位机器上计算下面的表达式会得到什么结果呢?C语言标准很小心地规避了说明在这种情况下该如何做。在许多机器上,当移动一个w位的值时,移位指令只考虑位移量的低log2w位,因此实际上位移量就是通过计算kmodw得到的。不过这种行为对于C程序来说是没有保证的,所以移位数量应该保持小于字长。另一方面,Java特别要求位移数量应该按照我们前面所讲的求模的方法来计算。2.C和C++都支持有符号(默认)和无符号数。Java只支持有符号数。3.由于C语言对同时包含有符号和无符号数表达式的

7、这种处理方式,出现了一些奇特的行为。当执行一个运算时,如果它的一个运算数是有符号的而另一个是有符号的,那么C语言会隐式地将有符号参数强制类型转换为无符号数,并假设这两个数都是非负的,来执行这个运算。4.补码非的两种计算方法:1)对每一位求补,再对结果加1;2)最右边的1不变,其左边的所有位取反。5.IA32是”Intel32位体系结构”(IntelArchitecture32-bit),以及最新的Intel64,即IA32的64位扩展,我们也称为X86-64.我们最常用的名字是“X86”,用它指代整个系列,也反映了直到i486处理器命名的惯例。6.8086:

8、是一个16位的微处理器。而i386才将体系结构扩展到

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。