《計算機系統(tǒng)概論(原書第2版)》前半部分闡述了計算機底層結構,后半部分講解了高級語言編程方法學。具體內容包括數(shù)據(jù)類型及其運算、數(shù)字邏輯、馮·諾伊曼模型、匯編語言、輸入輸出、TRAP程序和子程序、C語言編程等內容。
本書是計算機科學的經(jīng)典基礎教材。全書以自底向上方法幫助學生理解計算機系統(tǒng)的原理,前半部分闡述了計算機底層結構,后半部分講解了高級語言編程及編程方法學,主要內容包括數(shù)據(jù)類型及其運算、數(shù)字邏輯、馮·諾伊曼模型、匯編語言、輸入和輸出、TRAP程序和子程序、C語言編程等內容。
本書可用作高等院校計算機及相關專業(yè)學生的入門教材,也可作為的計算機專業(yè)人土和高級程序員的參考用書。
Yale N.Patt擁有斯坦福大學電子工程博士學位,目前擔任得克薩斯大學奧斯汀分校電子與計算機工程系教授。他是IEEE和ACM會士,曾因在高性能微處理器方面的成就而獲得IEEE Emannuel R.Piore獎、IEEE/ACM Eckert-Mauchly獎和IEEE Wallace W.McDowell獎,在教學方面獲得過ACM Karl V.Karlstrom杰出教育家獎、得克薩斯優(yōu)秀教學獎等。
出版者的話
專家指導委員會
譯者序
代序
第2版前言
第1版前言
第1章 歡迎閱讀本書
1.1 我們的目標
1.2 怎么才能做到
1.3 兩個反復出現(xiàn)的理念
1.3.1 抽象之理念
1.3.2 硬件與軟件
1.4 計算機系統(tǒng)簡述
1.5 兩個非常重要的思想
1.6 計算機:通用計算設備
1.7 從問題描述到電子運轉
1.7.1 問題的提出
1.7.2 算法
1.7.3 程序
1.7.4 指令集結構
1.7.5 微結構
1.7.6 邏輯電路
1.7.7 器件
1.7.8 小結
1.8 習題
第2章 bit、數(shù)據(jù)類型及其運算
2.1 bit和數(shù)據(jù)類型
2.1.1 bit——信息的基本單位
2.1.2 數(shù)據(jù)類型
2.2 整數(shù)數(shù)據(jù)類型
2.2.1 無符號整數(shù)
2.2.2 有符號整數(shù)
2.3 補碼
2.4 二進制數(shù)與十進制數(shù)之間的轉換
2.4.1 二進制數(shù)轉換為十進制數(shù)
2.4.2 十進制數(shù)轉換為二進制數(shù)
2.5 bit運算之一:算術運算
2.5.1 加法和減法
2.5.2 符號擴展
2.5.3 溢出
2.6 bit運算之二:邏輯運算
2.6.1 “與”運算
2.6.2 “或”運算
2.6.3 “非”運算
2.6.4 “異或”運算
2.7 其他類型
2.7.1 位矢量
2.7.2 浮點數(shù)
2.7.3 ASCⅡ碼
2.7.4 十六進制計數(shù)法
2.8 習題
第3章 數(shù)字邏輯
3.1 MOS晶體管
3.2 邏輯門
3.2.1 非門
3.2.2 或門、或非門
3.2.3 與門、與非門
3.2.4 摩根定律
3.2.5 多輸入門
3.3 組合邏輯
3.3.1 譯碼器
3.3.2 多路復用器
3.3.3 全加器
3.3.4 可編程邏輯陣列
3.3.5 邏輯完備性
3.4 存儲單元
3.4.1 R-S鎖存器
3.4.2 門控D鎖存器
3.4.3 寄存器
3.5 內存的概念
3.5.1 尋址空間
3.5.2 尋址能力
3.5.3 例子:22x3內存
3.6 時序電路
3.6.1 組合密碼鎖
3.6.2 狀態(tài)的概念
3.6.3 有限狀態(tài)機
3.6.4 有限狀態(tài)機的實現(xiàn)
3.7 LC-3計算機的數(shù)據(jù)通路
3.8 習題
第4章 馮·諾伊曼模型
4.1 基本部件
4.1.1 內存
4.1.2 處理單元
4.1.3 輸入和輸出單元
4.1.4 控制單元
4.2 LC-3:一臺馮·諾伊曼機器
4.3 指令處理
4.3.1 指令
4.3.2 指令周期
4.4 改變執(zhí)行順序
4.5 停機操作
4.6 習題
第5章 LC-3結構
5.1 ISA概述
5.1.1 內存組織
5.1.2 寄存器
5.1.3 指令集
5.1.4 操作碼
5.1.5 數(shù)據(jù)類型
5.1.6 尋址模式
5.1.7 條件碼
5.2 操作指令
5.3 數(shù)據(jù)搬移指令
5.3.1 PC相對尋址
5.3.2 間接尋址
5.3.3 基址偏移尋址
5.3.4 立即數(shù)尋址
5.3.5 一個例子
5.4 控制指令
5.4.1 條件跳轉指令
5.4.2 一個例子
5.4.3 循環(huán)控制的兩種方法
5.4.4 例子:哨兵法數(shù)組求和
5.4.5 JMP指令
5.4.6 TRAP指令
5.5 例子:字符數(shù)統(tǒng)計
5.6 總結:數(shù)據(jù)通路(LC-3)
5.6.1 數(shù)據(jù)通路的基本部件
5.6.2 指令周期
5.7 習題
第6章 編程
6.1 問題求解
6.1.1 系統(tǒng)分解
6.1.2 三種結構:順序、條件、循環(huán)
6.1.3 實現(xiàn)三種結構的LC-3指令
6.1.4 回顧字符數(shù)統(tǒng)計例子
6.2 調試
6.2.1 調試的基本操作
6.2.2 交互式調試器的使用
6.3 習題
第7章 匯編語言
7.1 匯編語言編程——更上一層
7.2 一個匯編程序
7.2.1 指令
7.2.2 偽操作
7.2.3 例子:字符數(shù)統(tǒng)計程序
7.3 匯編過程
7.3.1 概述
7.3.2 兩遍掃描
7.3.3 第1遍:創(chuàng)建符號表
7.3.4 第2遍:生成機器語言程序
7.4 相關知識
7.4.1 可執(zhí)行映像
7.4.2 多目標文件
7.5 習題
第8章 輸入/輸出
8.1 輸入/輸出的基本概念
8.1.1 設備寄存器
8.1.2 內存映射I/O與專用I/O指令
8.1.3 異步I/O與同步I/O
8.1.4 中斷驅動與輪詢
8.2 鍵盤輸入
8.2.1 基本輸入寄存器
8.2.2 基本輸入服務程序
8.2.3 內存映射輸入的實現(xiàn)
8.3 顯示器輸出
8.3.1 基本輸出寄存器(DDR和DSR)
8.3.2 基本輸出服務程序
8.3.3 內存映射輸出的實現(xiàn)
8.3.4 例子:鍵盤回顯
8.4 一個更復雜的輸入程序
8.5 中斷驅動I/O
8.5.1 什么是中斷驅動I/O
8.5.2 為什么要引入中斷驅動I/O
8.5.3 中斷信號的產(chǎn)生
8.6 內存映射I/O的回顧
8.7 習題
第9章 TRAP程序和子程序
9.1 LC-3 TRAP程序
9.1.1 概述
9.1.2 TRAP機制
9.1.3 TRAP指令
9.1.4 完整機制
9.1.5 I/O中斷處理程序
9.1.6 HALT中斷程序
9.1.7 寄存器內容的保存和恢復
9.2 子程序
9.2.1 調用/返回機制
9.2.2 JSR(R)指令
9.2.3 字符輸入的TRAP程序
9.2.4 PUTS:寫字符串
9.2.5 庫程序
9.3 習題
第10章 棧
10.1 棧的基本結構
10.1.1 抽象數(shù)據(jù)類型:棧
10.1.2 兩個實現(xiàn)例子
10.1.3 內存中的實現(xiàn)
10.1.4 小結
10.2 中斷驅動I/O(第二部分)
10.2.1 啟動和執(zhí)行
10.2.2 中斷返回
10.2.3 例子:嵌套中斷
10.3 基于棧的算術運算
10.3.1 棧的臨時存儲作用
10.3.2 例子:算術表達式
10.3.3 加、乘和取反
10.4 數(shù)據(jù)類型轉換
10.4.1 一個錯誤結果的例子:2+3=e
10.4.2 ASCⅡ/二進制轉換
10.4.3 二進制/ASCⅡ轉換
10.5 模擬計算器
10.6 習題
第11章 C語言編程概述
11.1 我們的目標
11.2 軟硬件結合
11.3 高級語言翻譯
11.3.1 解釋執(zhí)行
11.3.2 編譯執(zhí)行
11.3.3 兩種方法的優(yōu)缺點
11.4 C編程語言
11.5 一個簡單的C程序
11.5.1 main函數(shù)
11.5.2 編程風格
11.5.3 C預處理器
11.5.4 輸入和輸出
11.6 小結
11.7 習題
第12章 變量和運算符
12.1 概述
12.2 變量
12.2.1 三種基本數(shù)據(jù)類型:int、char、double
12.2.2 標識符的選擇
12.2.3 局部變量和全局變量
12.2.4 更多的例子
12.3 運算符
12.3.1 表達式和語句
12.3.2 賦值運算符
12.3.3 算術運算符
12.3.4 算術優(yōu)先級
12.3.5 位運算符
12.3.6 關系運算符
12.3.7 邏輯運算符
12.3.8 遞增/遞減運算符
12.3.9 運算符混合表達式
12.4 基于運算符的問題求解
12.5 編譯器處理
12.5.1 符號表
12.5.2 變量的空間分配
12.5.3 完整的例子
12.6 補充話題
12.6.1 三種基本類型的變種
12.6.2 文字常量、常量和符號值
12.6.3 存儲類型
12.6.4 更多的C運算符
12.7 小結
12.8 習題
第13章 控制結構
13.1 概述
13.2 條件結構
13.2.1 if語句
13.2.2 ifelse語句
13.3 循環(huán)結構
13.3.1 while語句
13.3.2 for語句
13.3ac電腦的選擇 25
2.3.1 最小系統(tǒng)需求 25
2.3.2 選擇操作系統(tǒng) 26
2.3.3 了解電腦配件 26
2.4 電腦配件的選擇 29
2.4.1 硬盤的選擇 29
2?E-mail地址
13.5 其他C語言控制結構
13.5.1 switch語句
13.5.2 break和continue語句
13.5.3 簡單計算器的例子
13.6 小結
13.7 習題
第14章 函數(shù)
14.1 概述
14.2 C語言中的函數(shù)
14.2.1 帶參數(shù)的函數(shù)
14.2.2 求解圓面積
14.3 C語言中函數(shù)的實現(xiàn)
14.3.1 運行時棧
14.3.2 實現(xiàn)機制
14.3.3 匯總
14.4 問題求解
14.4.1 例1:大小寫轉換
14.4.2 例2:畢達哥拉斯三角形
14.5 小結
14.6 習題
第15章 測試與調試技術
15.1 概述
15.2 錯誤類型
15.2.1 語法錯誤
15.2.2 語義錯誤
15.2.3 算法錯誤
15.3 測試
15.3.1 黑盒測試
15.3.2 白盒測試
15.4 調試
15.4.1 特定方法
15.4.2 源碼級調試工具
15.4.3 斷點
15.5 正確的編程方法
15.5.1 明確規(guī)格說明
15.5.2 模塊化設計
15.5.3 預防錯誤式編程
15.6 小結
15.7 習題
第16章 指針和數(shù)組
16.1 概述
16.2 指針
16.2.1 聲明指針變量
16.2.2 指針運算符
16.2.3 指針傳遞一個引用
16.2.4 空指針
16.2.5 語法
16.2.6 指針例程
16.3 數(shù)組
16.3.1 數(shù)組聲明
16.3.2 數(shù)組應用
16.3.3 數(shù)組參數(shù)
16.3.4 C語言的字符串
16.3.5 數(shù)組與指針的關系
16.3.6 實例:插入排序
16.3.7 C語言數(shù)組的不足
16.4 小結
16.5 習題
第17章 遞歸
17.1 概述
17.2 什么是遞歸
17.3 遞歸與循環(huán)
17.4 漢諾塔
17.5 斐波納契數(shù)列
17.6 二分查找
17.7 整數(shù)轉換為ASCⅡ字符串
17.8 小結
17.9 習題
笫18章 C語言中的I/O
18.1 概述
18.2 C標準庫函數(shù)
18.3 字符I/O操作
18.3.1 I/O流
18.3.2 putchar函數(shù)
18.3.3 getchai函數(shù)
18.3.4 緩沖I/O
18.4 格式化I/O
18.4.1 printf
18.4.2 scanf
18.4.3 可變長參數(shù)
18.5 文件I/O
18.6 小結
18.7 習題
第19章 數(shù)據(jù)結構
19.1 概述
19.2 結構體
19.2.1 typedef
19.2.2 結構體在C中的實現(xiàn)
19.3 結構體數(shù)組
19.4 動態(tài)內存分配
19.5 鏈表
19.6 小結
19.7 習題
附錄A LC-3指令集結構
附錄B 從LC-3到x86
附錄C LC-3的微結構
附錄D C編程語言
附錄E 常用表
附錄F 部分習題答案