C 指针原理揭秘:基于底层实现机制 (14):C 语言快速入门 2.3&3&3.1&3.1.1

阅读数:3 2019 年 12 月 11 日 20:21

C指针原理揭秘:基于底层实现机制(14):C语言快速入门 2.3&3&3.1&3.1.1

(小结)

内容简介
全书分为准备篇、基础篇、揭秘篇、实战篇。本书力求从底层实现机制进行解析,同时配合 C/C++ 编程技巧以及某些指针运用技巧,讲解如何提高程序效能,如何避免滥用指针。
准备篇中介绍 C 指针概述、UBUNTU 及开发环境配置、AT&T 汇编简介、编译原理基础;基础篇将对 AT&T 汇编以及 C 指针基础进行介绍;揭秘篇讲述高级 C 指针的实现机制以及 C++ 指针实现机制,同时讲解编程技巧和 C/C++ 指针高级应用;实战篇讲解解释语言指针、TCC 编译实践、垃圾回收等高级 C 指针应用话题。

C 语言是一门语法精简且功能强大的语言,其关键字仅有 32 个,它以 main 函数为中心,不但可以完成普通程序语言能做的工作,而且还可以做其他语言不擅长的工作,比如 Linux 内核、SQLite 嵌入式数据库,等等。本章以猜数字游戏制作为例,依次介绍了基本输入输出、条件语句、循环语句、随机数生成等基本语法,最后以二分查找算法为基础,讲解了自动猜数算法,以帮助读者快速学习 C 语言知识以及算法基础。


(AT&T 汇编概述)


(AT&T 汇编基础)


(IA-32 指令)

当计算机处理应用程序,运行其中的二进制指令码时,数据指针将指示处理器如何在内存的数据区域寻找要处理的数据,这块区域称为堆栈;指令码放在另外的指令区,并通过指令指针机制管理当前运行中的指令,当处理器完成一个指令码的处理之后,指令指针将指向下一条指令码。

IA-32 指令码(Intel、AMD 的 CPU 使用的指令码)由二进制码组成,格式如图 3-1 所示。

C指针原理揭秘:基于底层实现机制(14):C语言快速入门 2.3&3&3.1&3.1.1

图 3-1 IA-32 指令码

其中,指令前缀(Instruction Prefixes)可包含 1 到 4 个修改操作码行为的 1 字节前缀,它们分别是锁定前缀和重复前缀、段覆盖前缀和分支提示前缀、操作数长度覆盖前缀、地址长度覆盖前缀等。操作码(Opcode)定义了处理器执行的功能;修饰符包括 ModR/M(寻址方式说明符)、SIB(比例–索引–基址)、Displacement(移位),定义执行的功能中涉及存取的具体寄存器和内存位置;数据元素(Immediate)是完成功能所需要使用的数据,这些数据既可以是直接的数据值,也可以是数据在内存中的地址。

当数据元素被放入到堆栈中时,数据指针在内存中“向下”(地址减少)移动,而当数据从堆栈中读取时,数据指针则在内存中“向上”(地址增加)移动;指令指针可让处理器了解哪些指令码已经处理过了,接下来需要处理的指令码是哪条。数据指针的移动过程如图 3-2 中的左图所示,指令指针的移动如图 3-2 中的右图所示。

C指针原理揭秘:基于底层实现机制(14):C语言快速入门 2.3&3&3.1&3.1.1

图 3-2 数据指针和指令指针移动过程

C指针原理揭秘:基于底层实现机制(14):C语言快速入门 2.3&3&3.1&3.1.1

购书地址 https://item.jd.com/12533413.html?dist=jd

评论

发布