| 作者 |
| [英] 戈登·F.威廉姆斯(Gordon F.Williams)范志东 张琼声 |
| 丛书名 |
| 出版社 |
| 机械工业出版社 |
| ISBN |
| 9781911251635 |
| 简要 |
| 简介 |
| 内容简介书籍计算机书籍 ---------------------------自己动手做智能产品:嵌入式JavaScript实现--------------------------- 本书将通过简单的嵌入式编程,教会大家如何将日常物品转变为智能机器。当然市场中的ARM编程书籍多为平淡的教科书,相对复杂,编程语言对于初学者存在一定难度,本书采用读者易学易懂的编程语言,并结合实际动手操作来帮助读者实现产品智能化。 ---------------------------自己动手构造编译系统:编译、汇编与链接--------------------------- 本书以作者实现的一个基于Intelx86指令集的编译系统为例,结合程序代码的主要部分详细阐述了编译系统的实现原理和过程。本书对编译器、汇编器、链接器、编译优化器涉及的关键算法、数据结构和程序实现流程,以及ELF文件的格式、Intel指令格式均作了详细的说明,并结合大量的图表,展示了编译系统工作过程中代码信息的流动和存储格式的变化。是一本“手把手”教读者实现编译系统的贴心手册。 |
| 目录 |
---------------------------自己动手做智能产品:嵌入式JavaScript实现--------------------------- 前言 1 第1章 简介 5 为何要将物品智能化 5 在实践中学习 5 利用JavaScript进行创造 6 工具和材料 7 第一部分 微控制器 第2章 微控制器为何物 13 ARM历史 14 利用微控制器编程 15 第3章 Espruino入门 19 准备工作 20 插入接口 21 软件安装 22 连接开发板 24 固件升级 25 命令行初体验 26 编辑器 27 第4章 开启JavaScript之旅 31 准备工作 31 注释 32 数据类型 32 数学计算 33 变量 35 自增与自减 37 对象 38 函数 38 数组 42 面向对象 44 按位运算 45 if语句 51 &&和|| 52 三元操作符 53 for循环 53 异常 55 第二部分 电动机 第5章 什么是电动机 59 实验1:法拉第的电动机 60 实验2:电动机换向器 64 无刷直流电动机 68 实验3:步进电动机 69 实验4:步进电动机控制 72 实验5:多个步进电动机控制 76 第6章 频闪仪 79 找到一个风扇 79 实验6:速度检测 81 实验7:频闪仪 84 实验8:照得更远的频闪仪 86 第7章 约翰·罗杰·贝尔德的电视机 89 实验9:视觉的持续性 89 实验10:约翰·罗杰·贝尔德的电视机 92 第三部分 机电部分 第8章 制作一个简单的机器人 101 实验11:试用伺服电机 102 实验12:制作一个简单的机器人 105 实验13:循光 113 第9章 铅笔绘图仪 117 实验14:铅笔绘图仪 117 第10章 数码针孔相机 131 实验15:制作一个数码相机 131 第11章 打印机 145 实验16:制作一个打印机 145 第四部分 通信 第12章 有线通信 161 时序 161 实验17:制作示波器 163 第13章 切断连线:红外线 169 实验18:制作红外接收器 169 实验19:解码红外线信号 171 实验20:使用解码信号 175 实验21:用dweet.io在网络上使用遥控器 176 实验22:通过IFTTT在网络上使用遥控器 178 第14章 切断连线:无线电信号 181 实验23:连接接收器 182 实验24:连接发射器 183 实验25:从Espruino发射 185 实验26:解码接收的数据 186 第15章 连接无线网络 193 实验27:将WiFi添加到你的Pico 194 实验28:测试你的布线 198 实验29:连接到WiFi 199 实验30:将数据发送到Internet 200 实验31:从Internet接收数据 202 实验32:建立一个服务器 206 控制物品 209 第16章 低功耗蓝牙 213 低功耗蓝牙如何工作 214 如何使用低功耗蓝牙 216 Web Bluetooth 216 实验33:使用Puck.js 217 实验34:制作一个开门计数器 219 实验35:广播开门次数 222 实验36:用Eddystone接收开门次数 223 第五部分 合而为一 第17章 XY绘图仪 229 实验37:制作XY表 229 实验38:控制XY表 235 第18章 联网绘图仪 243 实验39:联网绘图仪 245 第六部分 总结 第19章 未来如何 257 附录A 零件和材料 259 附录B 常见的Espruino命令和变量 271 附录C Espruino汇编 277 ---------------------------自己动手构造编译系统:编译、汇编与链接--------------------------- 序 前言 第1章 代码背后 1 1.1 从编程聊起 1 1.2 历史渊源 2 1.3 GCC的工作流程 3 1.3.1 预编译 4 1.3.2 编译 5 1.3.3 汇编 6 1.3.4 链接 7 1.4 设计自己的编译系统 8 1.5 本章小结 9 第2章 编译系统设计 11 2.1 编译程序的设计 11 2.1.1 词法分析 12 2.1.2 语法分析 13 2.1.3 符号表管理 14 2.1.4 语义分析 15 2.1.5 代码生成 16 2.1.6 编译优化 16 2.2 x86指令格式 18 2.3 ELF文件格式 19 2.4 汇编程序的设计 21 2.4.1 汇编词法、语法分析 22 2.4.2 表信息生成 23 2.4.3 指令生成 24 2.5 链接程序的设计 25 2.5.1 地址空间分配 25 2.5.2 符号解析 26 2.5.3 重定位 27 2.6 本章小结 27 第3章 编译器构造 29 3.1 词法分析 29 3.1.1 扫描器 30 3.1.2 词法记号 32 3.1.3 有限自动机 36 3.1.4 解析器 40 3.1.5 错误处理 53 3.2 语法分析 55 3.2.1 文法定义 55 3.2.2 递归下降子程序 65 3.2.3 错误处理 70 3.3 符号表管理 74 3.3.1 符号表数据结构 75 3.3.2 作用域管理 78 3.3.3 变量管理 82 3.3.4 函数管理 88 3.4 语义分析 93 3.4.1 声明与定义语义检查 93 3.4.2 表达式语义检查 95 3.4.3 语句语义检查 97 3.4.4 错误处理 98 3.5 代码生成 101 3.5.1 中间代码设计 102 3.5.2 程序运行时存储 105 3.5.3 函数定义与return语句翻译 108 3.5.4 表达式翻译 110 3.5.5 复合语句与break、continue 语句翻译 120 3.5.6 目标代码生成 132 3.5.7 数据段生成 141 3.6 本章小结 145 第4章 编译优化 147 4.1 数据流分析 149 4.1.1 流图 149 4.1.2 数据流分析框架 152 4.2 中间代码优化 155 4.2.1 常量传播 155 4.2.2 复写传播 167 4.2.3 死代码消除 172 4.3 寄存器分配 177 4.3.1 图着色算法 177 4.3.2 变量栈帧偏移计算 182 4.4 窥孔优化 187 4.5 本章小结 190 第5章 二进制表示 191 5.1 x86指令 191 5.1.1 指令前缀 192 5.1.2 操作码 194 5.1.3 ModR/M字段 196 5.1.4 SIB字段 198 5.1.5 偏移 201 5.1.6 立即数 201 5.1.7 AT&T汇编格式 202 5.2 ELF文件 204 5.2.1 文件头 205 5.2.2 段表 207 5.2.3 程序头表 209 5.2.4 符号表 213 5.2.5 重定位表 214 5.2.6 串表 215 5.3 本章小结 217 第6章 汇编器构造 219 6.1 词法分析 220 6.1.1 词法记号 220 6.1.2 有限自动机 222 6.2 语法分析 223 6.2.1 汇编语言程序 223 6.2.2 数据定义 225 6.2.3 指令 226 6.3 符号表管理 227 6.3.1 数据结构 228 6.3.2 符号管理 230 6.4 表信息生成 234 6.4.1 段表信息 235 6.4.2 符号表信息 238 6.4.3 重定位表信息 239 6.5 指令生成 246 6.5.1 双操作数指令 247 6.5.2 单操作数指令 251 6.5.3 零操作数指令 254 6.6 目标文件生成 255 6.7 本章小结 261 第7章 链接器构造 263 7.1 信息收集 264 7.1.1 目标文件信息 264 7.1.2 段数据信息 266 7.1.3 符号引用信息 268 7.2 地址空间分配 269 7.3 符号解析 272 7.3.1 符号引用验证 274 7.3.2 符号地址解析 276 7.4 重定位 277 7.5 程序入口点与运行时库 281 7.6 可执行文件生成 283 7.7 本章小结 290 参考文献 291 |