Fondamenti di informatica
Organizzazione dei computer, sistemi operativi, fondamenti di Linux e teoria informatica di base.
擷取—執行週期與 Hack 架構(The Fetch-Execute Cycle)
課程前半部專注在硬體:你已在實驗課做出 Hack CPU 的各個元件 (暫存器、PC、ALU 等)。要理解 Hack 架構,我們必須開始思考軟體。 組合語言、機器碼與架構三者緊密綁在一起, 所以我們先學 Hack 組合語言,再往下鑽。之後的路線圖:
Leggi l'articolo →規格整理:我們要蓋什麼?
為什麼 RAM 用 15 位元位址(64KB)? 真正的 Hack 只有 32KB RAM(14 位元位址, 0x0000–0x3FFF),螢幕與鍵盤是 獨立的記憶體映射裝置(0x4000–0x6000)。 本課程是架構課不是硬體設計課,不直接模擬螢幕鍵盤—— 把 RAM 直接加大到 15 位元位址空間, 讓 0x4000–0x6000 這段位址落在 普通 RAM 裡:程式照常讀寫「螢幕」與「鍵盤」, 只是沒有真的畫面;想模擬按鍵就暫停
Leggi l'articolo →Hack 指令集架構(The Hack ISA)
類比:當你依照規格實作了一個 C 函式 (例如「mult(x,y) 應回傳 x × y」), 使用者不需要記得你怎麼寫的就能呼叫它; 你也可以改寫實作,只要仍回傳 x × y 就不會引入 bug。 同樣地,微架構「實作」ISA:寫組語時不需要知道 ISA 怎麼被實作, 而且你的程式碼在任何符合該 ISA 的硬體上都能正確運作。 例如 AMD 與 Intel 的現代 CPU 微架構天差地別, 卻普遍都實作 x86-64 這一個 ISA。
Leggi l'articolo →全局視角:兩趟式組譯器
為什麼標籤和變數要分開兩張表?因為它們的位址空間不同: 標籤住在 ROM(指令位址),變數住在 RAM (從 16 號開始配置)——同名時語意完全不同,混在一張表會出錯。
Leggi l'articolo →編譯器的全貌與詞法分析(Lexing)
我們已經懂了 Hack 組語與 Hack ISA,也會用組譯器把組語變成機器碼。 但組譯器本身是怎麼運作的? 本週的目標:用 C 打造一個自己的 Hack 組譯器! 在抽象階梯上,我們正在處理「組合語言 ISA」這一步的翻譯軟體 ——而它的原理與「高階語言 組語」的編譯器一脈相承。
Leggi l'articolo →虛擬機與中介表示法(VMs and IRs)
回想多數高階語言會先編譯到中介表示法(intermediate representation, IR),再進一步編譯到組語。 接下來兩週我們要學 Hack 的 IR——Hack VM—— 並寫一個 VM 翻譯器(VM translator)把 Hack VM 程式碼 編譯成組語。
Leggi l'articolo →Test 1 實作部分(Practical Section,50 分)
觀察 Z:A A = 1(互補律——恆真), 所以 Z = 1 = 0。Z 對 OR 沒有貢獻(同一律),整式變成 (X Y)。
Leggi l'articolo →CCIT4064 Microcontrollers Assignment 3 詳細解答
說明:除非特別註明,8051 題目以標準 Intel MCS-51 指令集與 12 MHz 晶振計算;Arduino 題目以 Arduino UNO R3 / Arduino Sketch 語法回答。
Leggi l'articolo →Assignment 3 — 詳細問題說明與完整解答
使用說明 > > 本文件對照原始解答 PDF(Assignment_3_wf_ay2526 solution.pdf)逐題重寫,補充每一個推導步驟,並在原 PDF 出現誤植處明確標註並給出依題目原始條件的正確答案: > > 1. Q1(d)(ii) 標題:原 PDF 寫成 -998.3125,但題目給的是 -998.125,且解答內文展開為 1111100110.001₂(對應 0.125),故 hex 結果 0xC4798800 對應
Leggi l'articolo →Chapter 7:Single Cycle Processor (Part 1) — 單周期處理器(第一部分)
課程:Introduction to Computer Organization (CCIT4026) > 主題:MIPS 單周期處理器的構建模組與資料路徑
Leggi l'articolo →Chapter 8:Single Cycle Processor (Part 2) — 單周期處理器(第二部分)
課程:Introduction to Computer Organization (CCIT4026) > 主題:單周期處理器的控制單元設計與完整執行範例
Leggi l'articolo →Chapter 9:Multiple Cycle Processor — 多周期處理器
課程:Introduction to Computer Organization (CCIT4026) > 主題:多周期處理器的架構、執行流程與 FSM 控制單元設計
Leggi l'articolo →IEEE 754 浮點數標準 完整教學
整數(Integer)只能表示離散的整數值,無法表示小數或非常大/非常小的數。例如:: 圓周率 π = 3.14159... 光速 c = 3.0 × 10⁸ m/s 電子質量 = 9.109 × 10⁻³¹ kg
Leggi l'articolo →MCS-51 (8051) 組合語言完整指令集參考手冊
本手冊涵蓋 MCS-51 微控制器的全部 111 條指令,分為五大類別,詳細說明每條指令的語法、運作原理、影響旗標、位元組數、機器週期數及使用範例。
Leggi l'articolo →導讀:如何使用本教材
L3.2cmL11.6cm 項目 & 內容 課程 & 6CCS3CIS Cryptography(三年級/Level 6 版本) 授課教師 & Eamonn W. Postlethwaite(前五週)、Ngoc Khanh Nguyen(後五週) Office hours & 以 email 預約:Eamonn 週一 16–17;Khanh 週五 13–14 上課時間 & 每週四 16–18 講課;週一或週二 tutorial 評量方式
Leggi l'articolo →什麼是密碼學?(講義 pp. 4–6)
講義一開始並沒有急著給出公式,而是先問一個看似簡單的問題:「密碼學是什麼?」 教師刻意列出七種來源各異的「定義」,目的不是要你背下其中一個,而是要你體會:對同一個學科,不同的人會因為關心的面向不同而給出不同的界定;而一旦下了定義,就等於劃出了界線(Wilde:「to define is to limit」)。
Leggi l'articolo →思想實驗:兩位領主的秘密通訊(講義 pp. 7–11)
兩位領主 Francis 與 Henry 各自駐紮在營帳(pavilion)中,想要「安全地」通訊。他們事先當面商定了三樣東西: 之後 Francis 要傳訊給 Henry 時:加密 寫在羊皮紙(parchment)上 交給最信任的騎士(rider)送達 Henry 解密閱讀。
Leggi l'articolo →什麼是「好的」加密方案?安全定義的五次迭代(講義 pp. 12–17)
講義用蘇格拉底式的問答,連續提出五個候選定義,每提出一個就問「Strong enough?」,再用一個反例推翻(或修正)它。這段推演是理解「安全定義為何微妙」的最佳範例,也是 Problem Set 1 第一題的直接前身——那裡會對 MAC 做一模一樣的事。
Leggi l'articolo →保密性之外:完整性與訊息鑑別碼(講義 pp. 18–20)
講義 p. 18 問:除了保密性之外,我們還想要什麼安全性質? 設想騎士被收買,竄改羊皮紙上的密文。他不知道金鑰也不知道訊息,但他仍然可以重排、增加或刪除字元。Henry 解密之後會得到什麼?一團亂碼嗎?如果不是亂碼呢?
Leggi l'articolo →保密性與完整性之外(!):重放、重排、反射、延遲、拒絕(講義 pp. 21–22)
假設 Francis 與 Henry 已經有了「完美」的加密與「完美」的 MAC:騎士讀不懂、也改不動任何一張羊皮紙。講義 p. 21 問:還有沒有我們想要的安全性質?有——因為騎士仍然可以對整張羊皮紙動手腳,而不必動其中的任何一個字。
Leggi l'articolo →歷史插曲:密碼學曾是「軍火」(講義 p. 23)
講義中場休息的「fun fact」其實一點也不輕鬆:它是 Problem 3 的全部題材,也呼應 Blanchette 對密碼學的定義——為了規範行為而寫的程式碼。一旦程式碼能夠規範行為,政府就會想規範程式碼。
Leggi l'articolo →機器、敵手與通用安全定義(講義 pp. 24–28)
講義 p. 24 把兩位領主抽象成兩台機器(machines)M_1( , ) 與 M_2( , )——文獻中也叫 players、agents、principals、entities——它們共享加密金鑰 與完整性金鑰 ,來回傳送 (c_1, _1), (c_2, _2), …。通道上另有一個敵手 。
Leggi l'articolo →Problem 1:On integrity(論完整性)
構造 A:常數標籤 MAC(「什麼都不做」的 MAC)。 正確性:對任何 、m, ( , m) = 0,而 ( , m, 0) = 1。 安全性:毫無。任何人對任何訊息都能「偽造」合法標籤 0。這是講義 p. 12「do nothing」加密方案在 MAC 世界的翻版;它在 (v) 會派上用場,因為它滿足 1(金鑰根本沒被用到,當然無法被恢復)卻完全不滿足 3。
Leggi l'articolo →Problem 2:On encryption(論加密)
場景一:公式化的軍事/商業訊息。 戰場上的回報往往只有少數幾種:「NOTHING TO REPORT」、「ATTACK AT DAWN」、「RETREAT」。 敵手(有加密預言機時)把這幾句都加密一遍;之後攔到的每一封密文,一比對就知道內容。 即使沒有預言機,光是「今天的密文與過去 30 天某一天相同」也足以推論「今天沒事」。 二戰時盟軍破解 Enigma 的「crib」正是利用德軍每日固定的「Keine besonderen Erei
Leggi l'articolo →