CS_APP
文章平均质量分 80
roockiet
这个作者很懒,什么都没留下…
展开
-
深入理解计算机系统笔记_程序的机器级表示_3.9异质的数据结构
C语言提供了两种将不同类型的对象组合到一起创建数据类型的机制:结构(structure),用关键字 struct来声明,将多个对象集合到一个单位中;联合(union),用关键字 union来声明,允许用几种不同的类型来引用一个对象 3.9.1结构 C语言的 struct声明创建一个数据类型,将可能不同类型的对象聚合到一个对象中。 用名字来引用结构的各个组成部分。类似于数组的实现,结构的所有组成部分都存放在内存中一段连续的区域内,而指向结构的指针就是结构第一个字节的地址。编译器维护关于每个结构类型的信息,指示原创 2021-01-06 16:45:57 · 157 阅读 · 0 评论 -
深入理解计算机系统笔记_程序的机器级表示_3.8数组的分配和访问
3.8数组分配和访问 C语言允许对指针进行运算,而计算出来的值会根据该指针引用的数据类型的大小进行伸缩。也就是说,如果p是一个指向类型为T的数据的指针,p的值为x,那么表达式p+i的值为xp+L·i,这里L是数据类型T的大小 数组引用A〔i]等同于表达式*(A+i)。它计算第i个数组元素的地址,然后访问这个内存位置。 扩展一下前面的例子,假设整型数组E的起始地址和整数索引i分别存放在寄存器各rdx和rcx中。下面是一些与E有关的表达式。我们还给出了每个表达式的汇编代码实现,结果存放在寄存器eax(如果是数原创 2020-12-28 21:53:39 · 122 阅读 · 0 评论 -
深入理解计算机系统笔记_程序的机器级表示_3.7过程/函数/方法/子例程
3.7过程 过程是软件中一种很重要的抽象。它提供了一种封装代码的方式,用一组指定的参数和一个可选的返回值实现了某种功能。然后,可以在程序中不同的地方调用这个函数。设计良好的软件用过程作为抽象机制,隐藏某个行为的具体实现,同时又提供清晰简洁的接口定义,说明要计算的是哪些值,过程会对程序状态产生什么样的影响。不同编程语言中,过程的形式多样:函数(function)、方法(method)、子例程(subroutine)、处理函数(handler)等等,但是它们有一些共有的特性。 要提供对过程的机器级支持,必须要处原创 2020-12-22 16:51:41 · 200 阅读 · 0 评论