低級程式語言

低級程式語言dai1 kap1 cing4 sik1 jyu5 jin4英文low-level programming language)係指形式上類似實際指令集架構,唔會點抽象化程式語言,例如係機械語言組合語言噉。

用監督程式將機械語言反譯成組合語言來睇。機械語言同組合語言都係低級程式語言。

低級語言嘅其中一個重大缺點就係可讀性(readability)低得好交關,另外就係可移植性更加低,每一個系列嘅處理器都有自己嘅低級程式語言;因為噉,人喺廿世紀中開始就有喺度創造高級(high-level)程式語言,用形式上類似表達問題嘅易睇嘅寫法來表達想電腦做嘅運算,最先打破低級語言嘅壟斷嘅高級語言係科研用嘅 Fortran,後來由 C 打破寫操作系統淨係用得低級語言嘅恁法[1]:8–10。再後期出現嘅例子包括 Python 同埋 Java 呀噉。

話雖如此,有啲嘢用高級語言會做唔到,或者要完全控制用幾多時間行某一般碼,喺呢啲少數情況下,低級語言仍然係有必要[2]

機械語言

內文:機械語言

機械語言(machine lanaguage)係最似電腦內部嘅實際運算嗰種程式語言,即係最低級嗰隻程式語言-淨係用 1(有電過)同 0(冇電過)嘅二進制數字嚟表達嗮所有嘢,而組成一段機械碼嘅數字會包含嗮「要用啲乜嘢數據」同「要做啲乜嘢作業」等嘅資訊[3]

舉個例說明:假想依家有款機械語言,

  • 款語言嘅每段命令都由 18 個數字組成,呢 18 個數字每一個都一係 1 一係 0(每一個呢啲數字成一個 bit),
    • 最頭嗰 7 個數字用二進制表達數據 A
    • 跟住嗰 7 個數字用二進制表達數據 B
    • 最尾嗰 4 個數字就表達要做乜(呢段就係所謂嘅行動碼;opcode)-0000 代表,0001 代表等等。

於是喺用呢種語言寫成嘅源碼入面,「0000011 0000100 0000」呢段碼係叫電腦計 3(用二進制寫係 11)加 4(用二進制寫係 100)嘅結果出嚟[3][4]

上便個例子當然係誇張咗啦。雖然機械語言理論上係二進制,但係其實通常唔會直接寫或者睇二進制。早喺1980年代,寫同輸入機械語言都已經係十六進制嘅天下[5][6],二進制基本上淨係分析啲行動碼嘅時候先會真係用到。現實上嘅處理器,一般來講,如果係 「立即定址」(即係運算數常數,就好似上便嗰個例子咁)啲數值亦都唔會橫跨字節同字節之間,所以正常唔會有需要將寫嘅嘢拆成二進制來分析。

睇機械語言嘅時候亦都一般唔會直接睇數字,而係用監督程式(monitor)或者除錯器(debugger)入面嘅內置反組合功能,將機械語言反譯成組合語言來睇[5]:8–11,所以就算好似上便個例子噉刁鑽,睇嘅時候都只係機拆,唔使人手拆。

組合語言

內文:組合語言

組合語言(assembly language)就係透過 「記憶語法」(mnemonics)符號化咗嘅機械語言。除咗巨集(macros)同 directives(組合器命令)等等少數例外之外,大部分嘅記憶語法同機械語言有直接對應[7]:48。雖然係咁,組合語言仍然係一種經過刻意設計嘅產物,唔係話機械語言係點就局住組合語言一定會點[8]:27

睇埋

  1. Sethi, Ravi (1989). Programming Languages: Concepts and Constructs (英文). Reading, MA: Addison-Wesley.
  2. "Assembler language". HLASM Language Reference (英文). IBM Knowledge Center. 2014.
  3. 3.0 3.1 "machine code (machine language)". Tech Target (英文). 喺2021年5月21號搵到..
  4. Hennessy, John L.; Patterson, David A. Computer Organization and Design. The Hardware/Software Interface (英文). Morgan Kaufmann Publishers.
  5. 5.0 5.1 駱德廉(譯) (c. 1981). APPLE 組合語言程式 (香港中文). 九龍: 博文出版社.
  6. 例如 "URADOS". I/O (日文). 東京: 工学社. 9 (1): 341–348. 1984年1月. 喺舊嘅日本電腦雜誌唔難搵到呢類機械語言嘅程式列表,全部都係十六進制。事實上淨係呢期已經有七個機械語言嘅程式登咗出來。
  7. PDP-11 software handbook (英文). Digital Equipment Corporation. 1978.
  8. Beck, Leland L. (1985). System Software: An Introduction to Systems Programming (英文). Reading, MA: Addison-Wesley. ISBN 0-201-10987-5.