勵志

勵志人生知識庫

con檔

COM格式檔案是一種在20世紀70年代由迪吉多公司推出的作業系統中使用的一種簡單二進制執行檔格式。這種格式最初被用作包含作業系統支持命令的文本檔案的擴展名,類似於Windows系統的.cmd檔案。隨著CP/M作業系統的引進,COM擴展名的檔案轉變為執行檔,並被MS-DOS作業系統採用。COM檔案不包含任何支持性數據,僅包含可執行代碼,且檔案頭即為第一條執行指令。

COM格式檔案的特點是它們沒有重定位信息,這意味著代碼中不能有跨記憶體段運算元據的指令。因此,代碼與數據必須限制在同一個64KB的記憶體段中。這種簡單性導致COM檔案的最大大小為65,280位元組(256位元組少於64KB),並且所有代碼和數據都存儲在一個段中。由於缺乏重定位信息,COM檔案被作業系統裝載到一個預設地址,通常是在PSP後面的偏移量0100h,並從那裡開始執行。入口點固定為0100h,這在8位機器上不是問題,因為它們可以最大地處理64KB的記憶體。

在Intel 8080 CPU架構中,只能定址65,536位元組的記憶體(地址範圍為0000h至FFFFh)。在CP/M下,記憶體的前256位元組(從0000h到00FFh)被保留給系統零頁使用,因此任何用戶程式都必須在0100h載入才能執行。COM檔案完全適合這個模型。

儘管MS-DOS和CP/M中的檔案格式相同,兩個作業系統的.COM檔案並不兼容。MS-DOS COM檔案包含x86指令和可能的MS-DOS系統調用,而CP/M COM檔案包含8080指令(限於某些機器的程式也可能包含8085或Z80的附加指令)和CP/M系統調用。