問題 – 系統程式
- 組合語言是如何轉換成機器碼的?
- A 指令怎麼轉?
- C 指令怎麼轉?
- 假指令是甚麼? 怎麼轉成機器碼?
- 真實機器 (例如 x86, RISC-V, ARM 的組合語言和機器碼和 nand2tetris 有何不同?)
- 要怎樣才能寫一個組譯器?
- 甚麼是 BNF/EBNF ?
- 如何描述高階語言的語法?
- 高階語言是如何轉換成組合語言的?
- 如何將高階語言轉換成一系列平舖直述的指令 ? (或轉換成組合語言)
- 如何拆掉迴圈
- 如何將有迴圈的 C 語言轉成沒有迴圈的?
- 如何將函數呼叫轉成組合語言?
- 如何支援遞迴?
- 高階語言轉成甚麼樣的組合語言效能才會好?
- 甚麼是編譯器的 optimization ?
- 有哪些 optimization 的技巧? 這些技巧的效用如何?
- 大部分的程式都能有效的 optimization 嗎? 有沒有那些程式寫法無法 (或很難) 被編譯器優化?
- 作業系統是甚麼?到底作業系統應該支援甚麼樣的功能?
- 我們寫程式有用到作業系統嗎? 舉個例子 …
- 沒有作業系統我們能寫程式嗎? 該怎麼寫,舉個例子 …
- 虛擬機是甚麼?
- 虛擬機應該支援甚麼指令集?
- 虛擬機應該支援甚麼功能?
- 甚麼是堆疊機?記憶體機?暫存器機?
- 不同的虛擬機架構有甚麼優缺點?
- 虛擬機的作法會影響速度嗎?
- 甚麼樣的虛擬機會很慢? 甚麼樣的虛擬機才會執行得快?
- pcode 是甚麼?
- 為何 Java 要定義中間碼的 byte code,那是一個甚麼樣的虛擬機? 他和 Android 的虛擬機有何不同?
- VMware, VirtualBox 是甚麼樣的虛擬機?
- Docker 又是甚麼樣的虛擬機?為何 docker 可以用原生機 99.2% 的速度執行?
- K8s 又是甚麼樣的虛擬機?