低級程式語言
低級程式語言(英文:low-level programming language)係指形式上類似實際指令集架構,唔會點抽象化嘅程式語言,例如係機械語言同組合語言噉。
低級語言嘅其中一個重大缺點就係可讀度低得好交關,另外就係可移植性更加低,每一個系列嘅處理器都有自己嘅低級程式語言;因為噉,人喺廿世紀中開始就有喺度創造高級(high-level)程式語言,用形式上類似人表達問題嘅易睇嘅寫法來表達想電腦做嘅運算,最先打破低級語言嘅壟斷嘅高級語言係科研用嘅 Fortran,後來由 C 打破寫操作系統淨係用得低級語言嘅恁法[1]:8–10。再後期出現嘅例子包括 Python 同埋 Java 呀噉。
話雖如此,有啲嘢用高級語言會做唔到,或者要完全控制用幾多時間行某一般碼,喺呢啲少數情況下,低級語言仍然係有必要[2]。
機械語言
[編輯]機械語言(machine lanaguage)係最似電腦內部嘅實際運算嗰種程式語言,即係最低級嗰隻程式語言——淨係用 1(有電過)同 0(冇電過)嘅二進制數字嚟表達嗮所有嘢,而組成一段機械碼嘅數字會包含嗮「要用啲乜嘢數據」同「要做啲乜嘢作業」等嘅資訊[3]。
舉個例說明:假想依家有款機械語言,
於是喺用呢種語言寫成嘅源碼入面,「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。
睇埋
[編輯]引咗
[編輯]- ↑ Sethi, Ravi (1989). Programming Languages: Concepts and Constructs (英文). Reading, MA: Addison-Wesley.
- ↑ "Assembler language". HLASM Language Reference (英文). IBM Knowledge Center. 2014.
- ↑ 3.0 3.1 "machine code (machine language)". Tech Target (英文). 喺2021年5月21號搵到..
- ↑ Hennessy, John L.; Patterson, David A. Computer Organization and Design. The Hardware/Software Interface (英文). Morgan Kaufmann Publishers.
- ↑ 5.0 5.1 駱德廉(譯) (c. 1981)。《APPLE 組合語言程式》 (香港中文)。九龍:博文出版社。
- ↑ 例如 "URADOS". I/O (日文). 東京: 工学社. 9 (1): 341–348. 1984年1月. 喺舊嘅日本電腦雜誌唔難搵到呢類機械語言嘅程式列表,全部都係十六進制。事實上淨係呢期已經有七個機械語言嘅程式登咗出來。
- ↑ PDP-11 software handbook (英文). Digital Equipment Corporation. 1978.
- ↑ Beck, Leland L. (1985). System Software: An Introduction to Systems Programming (英文). Reading, MA: Addison-Wesley. ISBN 0-201-10987-5.