1. CPU 的最小執行單位是 Microoperation
2. 一條 Instruction 裡包含 opcode、mode、address (視不同 CPU) 等
opcode 指定要做的運算,一個 opcode 會執行「一群」 Microoperation
3. Instruction 以 binary 呈現,就是所謂的「機械碼」
4. 機械碼難記 -> 組合語言
5. 所有組合語言指令不可能都有一一對應的機械碼,通常內部電路只 implement
必要的 Instruction,其他的 Instruction 由程式或硬體 (某些指令最佳化
時) 來執行一串的 Instructions 完成
最基本的 CPU 是如此...
===
唉!這個話題扯了半天,還是圍在組語的現行用途在繞。新一批程式菜鳥
還沒搞清楚組語是啥東東就已經被 VB, Delphi, CBC 這些 RAD 給寵壞了
,看到學校老師還在教組語就哇哇叫,大加撻伐,上網來數落組語的不是
。我們先來釐清一個先後因果關係,搞清楚了,菜鳥們就不會再聊組語會
不會淘汰這種超爆笑的話題了。這種問題就跟問『人不會是細胞組成的』
一樣搞笑。
CPU 是電腦的運算中心,它由電路組成。控制電路,由CPU設計小組所規畫
的機械碼來控制。為了能更方便撰寫機械碼,於是把每一個機械碼指令用一
個簡單明瞭的指令代替,這就是『組合語言』。但每一個組合語言(機械碼)
所做的工作實在太小了,於是把『一堆』組合語言指令集合成一個完整的動
作,這就是高階程式語言。程式寫多了,又覺得高階語言指令所做的動作又
太少,再集合數個指令衍生出物件類別,這就是物件導向程式語言。
如此一直演變下去,程式語言越來越簡單,但每一個指令所包含的組合語言
碼卻越來越多,所以後代程式語言所產生的執行檔也就越大。因為它是由組
語開始一層包一層地衍生出來的,過去高階語言要編譯成執行碼,都是先翻
譯成組語,再由組語組譯成執行檔。現在一開始就用 RAD 的菜鳥們誰還知道
這個步驟啊?知道的話就不會問這種問題了,還可以討論這麼久哩!
總而言之,組合語言等於是控制 CPU 的電路設計。有 CPU 就有組語,這不
是誰想淘汰它就能淘汰得了的。除非他的電腦不用 CPU 。否則,只要你在寫
程式,就是在用組合語言,不同的只是這個組合語言是由你自己寫,還是高階
語言編譯器幫你產生而已。
Monday, December 28, 2015
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment