更新时间:2021-04-30 22:15:27
封面
作者介绍
版权信息
内容简介
前言
读者服务
第1章 工欲善其事,必先利其器
1.1 代码编辑工具:Vim
1.2 程序编译工具:make
1.3 代码管理工具:Git
第2章 计算机体系结构与CPU工作原理
2.1 一颗芯片是怎样诞生的
2.2 一颗CPU是怎么设计出来的
2.3 计算机体系结构
2.4 CPU性能提升:Cache机制
2.5 CPU性能提升:流水线
2.6 多核CPU
2.7 后摩尔时代:异构计算的崛起
2.8 总线与地址
2.9 指令集与微架构
第3章 ARM体系结构与汇编语言
3.1 ARM体系结构
3.2 ARM汇编指令
3.3 ARM寻址方式
3.4 ARM伪指令
3.5 ARM汇编程序设计
3.6 C语言和汇编语言混合编程
3.7 GNU ARM汇编语言
第4章 程序的编译、链接、安装和运行
4.1 从源程序到二进制文件
4.2 预处理过程
4.3 程序的编译
4.4 链接过程
4.5 程序的安装
4.6 程序的运行
4.7 链接静态库
4.8 动态链接
4.9 插件的工作原理
4.10 Linux内核模块运行机制
4.11 Linux内核编译和启动分析
4.12 U-boot重定位分析
4.13 常用的binutils工具集
第5章 内存堆栈管理
5.1 程序运行的“马甲”:进程
5.2 Linux环境下的内存管理
5.3 栈的管理
5.4 堆内存管理
5.5 mmap映射区域探秘
5.6 内存泄漏与防范
5.7 常见的内存错误及检测
第6章 GNU C编译器扩展语法精讲
6.1 C语言标准和编译器
6.2 指定初始化
6.3 宏构造“利器”:语句表达式
6.4 typeof与container_of宏
6.5 零长度数组
6.6 属性声明:section
6.7 属性声明:aligned
6.8 属性声明:format
6.9 属性声明:weak
6.10 内联函数
6.11 内建函数
6.12 可变参数宏
第7章 数据存储与指针
7.1 数据类型与存储
7.2 数据对齐
7.3 数据的可移植性
7.4 Linux内核中的size_t类型
7.5 为什么很多人编程时喜欢用typedef
7.6 枚举类型
7.7 常量和变量
7.8 从变量到指针
7.9 指针与数组的“暧昧”关系
7.10 指针与结构体
7.11 二级指针
7.12 函数指针
7.13 重新认识void
第8章 C语言的面向对象编程思想
8.1 代码复用与分层思想
8.2 面向对象编程基础
8.3 Linux内核中的OOP思想:封装
8.4 Linux内核中的OOP思想:继承
8.5 Linux内核中的OOP思想:多态
第9章 C语言的模块化编程思想
9.1 模块的编译和链接
9.2 系统模块划分
9.3 一个模块的封装
9.4 头文件深度剖析
9.5 模块设计原则
9.6 被误解的关键字:goto
9.7 模块间通信
9.8 模块设计进阶
9.9 AIoT时代的模块化编程
第10章 C语言的多任务编程思想和操作系统入门
10.1 多任务的裸机实现
10.2 操作系统基本原理
10.3 中断
10.4 系统调用
10.5 揭开文件系统的神秘面纱
10.6 存储器接口与映射