彙编语言与计算机体系结构:使用C++和Java


彙编语言与计算机体系结构:使用C++和Java

文章插图
彙编语言与计算机体系结构:使用C++和Java彙编语言与计算机体系结构:使用C++和Java,2006年出版,作者是吕宏辉 。
【彙编语言与计算机体系结构:使用C++和Java】彙编语言和计算机体系结构都是难学的课程 。传统的彙编语言是如此複杂和特别,以至于即使学习基本概念都可能是一项困难任务 。计算机体系结构也有同样的问题,而且更严重 。学习彙编语言,我们要研究一个複杂系统;而学习计算机体系结构,则要研究许多複杂系统 。那幺怎样才能最有效地学习彙编语言和计算机体系结构呢?本书採用的方法是使用一个简单的计算机模型H1 。H1非常容易学习,学生可以迅速用H1完成大量任务 。另外,学生可以着重学习重要的系统概念,而不是无关紧要的细节 。
基本介绍书名:彙编语言与计算机体系结构:使用C++和Java
作者:吕宏辉
ISBN:9787302120032
定价:79
出版时间:2006.01.01
图书目录第1章数制11.1简介11.2按位记数制11.3各数制的算术规则41.4数制转换61.5Horner法91.6有符号二进制数101.6.1符号—绝对值表示法101.6.22的补码錶示法111.6.31的补码錶示法131.6.4加n表示法141.7用2的补码加法计算减法141.82的补码和无符号数的範围151.9扩展2的补码和无符号数161.10溢出171.10.1有符号数溢出171.10.2无符号数溢出181.11分析2的补码数201.12加法器电路211.13门231.14用加法器执行减法241.15比较有符号数261.16比较无符号数271.17正数、负数和无符号数的一致对待271.18浮点数表示法281.18.1科学记数法281.18.232位IEEE754浮点数格式291.18.3下溢、溢出和特殊值301.18.4某些Java程式中的计算误差301.18.5长格式351.19小结351.20问题36第2章机器语言402.1简介402.2计算机的组件402.3机器语言编程442.4在sim上运行机器语言程式482.5问题52第3章H1彙编语言:第1部分543.1简介543.2彙编语言基础553.3注释彙编语言程式583.4使用标号583.5使用彙编器613.6低级语言与高级语言653.7彙编器工作原理663.8使用dup修饰符673.9运算元栏位中的算术表达式683.10指定当前位置703.11字元串713.12org伪指令743.13end伪指令753.14指令的顺序执行763.15问题78第4章H1彙编语言:第2部分814.1简介814.2描述指令的简写形式814.3直接指令824.4堆叠指令834.5立即指令854.6I/O指令904.7转移指令964.8间接指令984.9相对指令1024.10变址1034.11连线指令1054.12终止指令1094.13高级语言中指令的自动生成1094.14调试1104.15使用存储映像式I/O1154.16equ伪指令1174.17Java程式的潜在问题:大小端1184.18问题121第5章电子学和数字逻辑电路基础1255.1简介1255.2电子学基础1255.2.1导体和绝缘体1255.2.2一个简单电路1265.2.3有效电压1275.2.4电源1275.2.5如何避免触电1285.2.6电晶体1295.2.7电容、电感和阻抗1315.3组合逻辑电路1335.3.1门1335.3.2布尔函式1345.3.3最小电路1355.3.4使用布尔代数使电路最小化1365.3.5摩根定律的图示法1375.3.6使用卡诺图使电路最小化1385.3.7多路复用器1415.3.8解码器和编码器1425.3.9半加器和全加器1435.3.10一位移位器1445.3.11乘法器阵列1455.3.12算术逻辑单元1485.3.13三态缓冲器1495.3.14ROM1515.4时序逻辑电路1535.4.1SR触发器1535.4.2时钟控制D触发器1555.4.3时钟控制JK触发器1575.4.4边沿检测1575.4.5T触发器1595.4.6RAM1595.4.7二进制计数器1605.4.8暂存器1615.4.9时钟和序列发生器1635.5积体电路1645.6问题165第6章H1和V1的微级1686.1简介1686.2H1的微级1686.2.1H1的组织概述1686.2.2微指令1706.2.3存储器数据汇流排1716.2.4存储器地址汇流排1726.2.5暂存器库1726.2.6指定微操作1756.2.7驱动暂存器库的控制输入端1756.2.8整合H1各部分1766.2.9分支多路复用器1786.2.10定时问题1806.2.11微指令格式1816.2.12序列发生器驱动的控制输入端1816.2.13基本指令集的微代码1826.2.14硬体/微代码权衡1876.3在sim上使用新的微代码1896.3.1如何使用!伪指令1896.3.2创建配置档案1896.3.3创建二进制微代码1916.3.4用新指令集彙编1926.3.5在微级上跟蹤1936.3.6加密微代码198 6.3.7编写并最佳化複杂的微代码1986.4解释机器语言指令2006.5硬接线控制2016.6垂直微编程2026.6.1使用V12026.6.2构成更短的微指令2036.6.3彙编垂直微代码2056.7问题210第7章评估H1的指令集体系结构:第1部分2147.1简介2147.2哑编译器2147.3全局变数2187.4局部变数2217.5变化的相对地址2297.6参数和传值调用2307.7返回值2357.8需要相对指令的原因2367.9确定动态局部变数和参数的地址2387.10间接引用指针2417.11问题243第8章评估H1的指令集体系结构:第2部分2498.1简介2498.2引用调用2498.2.1引用调用的实现2498.2.2C++引用参数的概念视图2568.2.3不间接引用C++引用参数的情况2578.2.4传值调用与引用调用的比较2588.2.5常数和表达式作为变元2598.3函式重载和重命名2638.4结构2678.5Java中的指针2718.6函式指针2728.7数组2748.7.1定义并访问数组2748.7.2数组作为变元2788.7.3Java中的数组2828.8控制语句2838.9有符号数和无符号数比较2858.10多字加法2858.11位级操作2868.12递归2878.13问题293第9章高级彙编语言编程3019.1简介3019.2指向指针的指针3019.3引用调用及其他地方存在的潜在错误3079.4关係和布尔表达式3109.5字元串3139.6值结果调用3159.7变长变元列表3219.8问题326第10章连线和载入32910.1简介32910.2浮动栏位33010.3显示标题和机器代码正文的程式33410.4小s项33610.5禁止重定位33710.6分别彙编33810.7乘法子例程34810.8使用库35010.9分别彙编的优点35710.10启动代码35710.11C++模组的分别编译36710.12问题371第11章用C++或Java实现彙编器和连线器37611.1简介37611.2编写彙编器37611.2.1一个简单彙编器的规範37711.2.2操作码錶378 11.2.3符号表38011.2.4使用二进制档案38211.2.5读取输入文本档案并创建标题38511.2.6彙编机器字38711.2.7将机器正文写入输出档案38811.2.8分析输入38811.2.9Java程式的大小端问题38811.2.10添加对public、extern和end伪指令的支持38911.3编写连线器39011.3.1一个简单连线器的规範39011.3.2构建P、E、R和S表39111.3.3重定位地址并解析外部引用39311.3.4添加库支持39511.4问题396第12章最优指令集39712.1简介39712.2新增和改进的指令39812.2.1mult、m、div和rem39912.2.2addc和subc40012.2.3scmp40112.2.4ucmp40212.2.5shll和shrl40312.2.6shra40412.2.7addy40512.2.8or、xor、and和flip40712.2.9cali40912.2.10sect和dect40912.2.11sodd41012.2.12esba、reba、bpbp、pobp和pbp41112.2.13cora41612.2.14bcpy41712.3鍊表——使用最优指令集示例41812.4关于最优指令集的进展报告42412.4.1主存储器的数量不足42412.4.2存储器存储字元串的效率不高42412.4.3缺少加和减的立即指令42512.4.4缺少变址暂存器42512.4.5累加器型暂存器太少42512.4.6swap指令破坏sp暂存器42512.4.7缺少乘法和除法指令42612.4.8sp暂存器作为栈顶指针和基址暂存器的双重用途42612.4.9难以获得堆叠上变数的地址42612.4.10缺少块複製指令42612.4.11难以调用地址已知的函式42612.4.12aloc和dloc指令的局限性42612.4.13难以执行有符号数和无符号数比较42612.4.14难以执行多字加法42612.4.15不支持位级操作42712.5问题427第13章使用、评估并实现最优指令集和堆叠指令集43013.1简介43013.2H1上的乘法43013.3二维数组43713.4彙编语言中的面向对象编程44113.4.1C++的结构、类和对象44113.4.2继承452 13.4.3通过指针调用成员函式45713.4.4虚函式和多态性46413.5名调用47213.6面向堆叠的体系结构47913.6.1体系结构与组织47913.6.2以栈顶代替ac暂存器48013.6.34位操作码的可用性48413.6.4特殊的堆叠操作48513.6.5更简单的编译48613.6.6返回值48713.6.7使用堆叠指令集示例48913.6.8比较最优指令集和堆叠指令集49113.6.9关于JVM的几点观察49213.7编写最优和堆叠指令集的微代码49313.8微编程的挑战49613.9问题497第14章存储系统50314.1简介50314.2地址的传送50314.3多程式系统50514.4直接存储器存取50514.5分时系统50614.6重定位暂存器50614.7虚拟存储器50814.7.1简单分页系统50914.7.2关联存储器51214.7.3中断51414.7.4请求式分页51614.7.5请求式分页的页面替换策略51814.7.6页面大小的考虑51914.7.7超级用户/用户模式52014.7.8存储器保护52114.7.9分页的分段52114.8高速缓冲存储器52214.8.1快取的替换策略52314.8.2写策略52314.8.3存储器到快取的映射方案52414.9可共享的程式52614.10问题527第15章某些现代体系结构53015.1简介53015.2CISC与RISC53015.3SPARC:RISC体系结构53215.3.1重叠的暂存器视窗53215.3.2保存和恢复指令53615.3.3载入和存储指令53815.3.4转移、call和jmpl指令54315.3.5指令流水线54615.3.6连线指令55215.3.7定址方式55315.3.8一个简单的彙编语言程式55515.3.9合成指令55715.3.10编译器生成的代码55915.3.11存储映像式I/O56515.4Pentium:CISC体系结构56615.4.1暂存器结构56615.4.2彙编语言56715.4.3编译器生成的代码56815.4.4I/O指令57015.5问题571第16章Java虚拟机(JVM)57616.1简介57616.2JVM的结构57716.3某些使用运算元堆叠的普通操作57816.4方法的调用和返回57916.5执行引擎的实现58116.6明智之举:JVM使用堆叠体系结构582 16.7一个简单的例子58216.8常数池58416.9类档案格式58516.10位元组码的空间效率58916.11控制语句59016.12反彙编类档案59116.13对象和数组59316.14JVM:抽象机器59516.15问题595附录A指令集汇总(s.txt、b.txt、o.txt、k.txt)598附录B微指令级汇总(mic.txt)606附录C标準指令集的微代码(s.has)609附录DSPARC汇总(sparc.txt)614附录Ejava虚拟机位元组码汇总(jvm.txt)620附录FASCII汇总(ascii.txt)625附录G数制汇总(number.txt)627附录H了解C++对Java程式设计师的帮助628