導航:首頁 > 源碼編譯 > 編譯器把指令放在哪裡

編譯器把指令放在哪裡

發布時間:2025-04-06 19:14:11

A. 計算機指令主要存放在哪

A、存儲器。

計算機存儲器(英語:Computer memory)是一種利用半導體、磁性介質等技術製成的存儲資料的電子設備。其電子電路中的資料以二進制方式存儲,不同存儲器產品中基本單元的名稱也不一樣。

計算機存儲器可分為內部存儲器(又稱內存或主存)和外部存儲器,其中內存是CPU能直接定址的儲存空間,由半導體器件製成。內存的特點是訪問速率快。

我們平常使用的程序,如Windows操作系統、打字軟體、游戲軟體等,一般都是安裝在硬碟等外部記憶體上的,但必須把它們調入內存中運行,才能真正使用其功能,我們平時輸入一段文字,或玩一個游戲,其實都是在內存中進行的,數據產生後不斷地由內存向外部記憶體進行讀寫。

就好比在一個書房裡,存放書籍的書架和書櫃相當於電腦的外部記憶體,而我們工作的辦公桌就是內存。通常我們把要永久保存的、大量的數據儲存在外部記憶體上,而把一些臨時的或少量的數據和程序放在內存上,當然內存的好壞會直接影響電腦的運行速度。

容量

存儲器以二進制計算容量,基本單位是Byte:

1、1 Kilobyte(KB) =1,024B=210B

2、1 Megabyte(MB)=1,024KiB=220B=1,048,576B

3、1 Gigabyte(GB)=1,024MiB=230B=1,073,741,824B

4、1 Terabyte(TB)=1,024GiB=240B=1,099,511,627,776B

5、1 Petabyte(PB)=1,024TiB=250B=1,125,899,906,842,624B

6、1 Exabyte(EB) =1,024PiB=260B=1,152,921,504,606,846,976B

7、1 Zettabyte(ZB)=1,024EiB=270B

8、1 Yottabyte(YB)=1,024ZiB=280B

(1)編譯器把指令放在哪裡擴展閱讀:

在計算機技術中,指令是由指令集架構定義的單個的CPU操作。在更廣泛的意義上,「指令」可以是任何可執行程序的元素的表述,例如位元組碼。

在傳統的構架上,指令包括一個操作碼(opcode)——它指定要進行什麼樣的操作,例如「將存儲器中的內容與寄存器中的內容相加」——和零個或者更多的操作數(operand)——它可能指定參與操作的寄存器、內存地址或者立即數(literal data)。操作數可能還包括定址方式,它確定操作數的含義。

在超長指令字(VLIW)構架中(包括很多微指令(microcode)構架)多個並發的操作和操作數在一條單獨的指令中被指定。

指令的長度相差懸殊,從一些微控制器(microcontroller)中的4位(bit)到一些超長指令字系統中的幾百位。大部分現代的個人計算機、大型計算機、超大型計算機中的處理器的指令尺寸在16到64位之間。

在一些構架中,特別是RISC構架中,指令長度是固定的,通常與其構架的字長一致。在其他的構架中,指令有不同的長度,但通常是位元組或者半個字的整數倍。

構成程序的指令很少以它在機器內部的數值形式而直接的被使用;它們可以被程序員通過匯編語言加以表示,或者,更常見的,被編譯器生成。

B. 預編譯的編譯指令

預編譯指令指示了在程序正式編譯前就由編譯器進行的操作,可以放在程序中的任何位置。常見的預編譯指令有:
(1)#include 指令
該指令指示編譯器將xxx.xxx文件的全部內容插入此處。若用<>括起文件則在系統的INCLUDE目錄中尋找文件,若用 括起文件則在當前目錄中尋找文件。一般來說,該文件是後綴名為h或cpp的頭文件。
注意:<>不會在當前目錄下搜索頭文件,如果我們不用<>而用把頭文件名擴起,其意義為在先在當前目錄下搜索頭文件,再在系統默認目錄下搜索。
(2)#define指令
該指令有三種用法:
第一種是定義標識,標識有效范圍為整個程序,形如#define XXX,常與#if配合使用;
第二種是定義常數,如#define max 100,則max代表100(這種情況下使用const定義常數更好,原因見注1);
第三種是定義函數,如#define get_max(a, b) ((a)>(b)?(a):(b)) 則以後使用get_max(x,y)就可以得到x和y中較大的數(這種方法存在一些弊病,見注2)。
第四種是定義宏函數,如#define GEN_FUN(type) type max_##type(type a,type b){return a>b?a:b;} ,使用時,用GEN_FUN(int),則此處預編譯後就變成了 max_int(int a,int b){return a>b?a:b;},以後就可以使用max_int(x,y)就可以得到x和y中較大的數.比第三種,增加了類型的說明。
(3)#if、#else和#endif指令
這些指令一般這樣配合使用:
#if defined(標識) //如果定義了標識
要執行的指令
#else
要執行的指令
#endif
在頭文件中為了避免重復調用(比如說兩個頭文件互相包含對方),常採用這樣的結構:
#if !(defined XXX) //XXX為一個在你的程序中唯一的標識符,
//每個頭文件的標識符都不應相同。
//起標識符的常見方法是若頭文件名為abc.h
//則標識為abc_h
#define XXX
真正的內容,如函數聲明之類
#endif
注1:因為:const常量有數據類型,而宏常量沒有數據類型。編譯器可以對前者進行類型安全檢查,而對後者只進行字元替換,沒有類型安全檢查,並且在字元替換時可能會產生意料不到的錯誤(邊際效應)。
注2:例如get_max(a++, b)時,a++會被執行多少次取決於a和b的大小!所以建議還是用內聯函數而不是這種方法提高速度。雖然有這樣的弊病,但這種方法的確非常靈活,因為a和b可以是各種數據類型。
注3:可以查看網路的預處理命令,編排的比較簡明。

C. Delphi的命令行編譯命令

1. Delphi的命令行編譯器(dcc32.EXE)允許你從DOS命令行方式實現IDE編譯器(delphi32.exe)的所有功能。使用DOS命令運行命令行編譯器的語法為:dcc32 [選項] [文件名] [選項]。
2. 你可以為命令行編譯器指定多個參數。一個參數包含一個破折號「-」或「/」和緊跟著的一個選項字元構成。選項可以是任意順序並且可以在源文件名前面或後面。
3. Delphi支持用編譯器指令關鍵字描述的編譯器指令。使用「$」和「D」命令行選項可以改變所有的默認編譯器狀態。用「$」和「D」命令行選項等同於在源文件的前面添加編譯器指令。
4. 命令行編譯器允許你輸入相同的命令行參數,它將忽略所有除最後一個之外。這個方式,盡管通過配置文件你可以改變一些設置,你仍然可以覆蓋它使用命令行參數。
5. 你可以設置一個編譯選項列表到一個叫做DCC32.CFG的配置文件中,它將用於編譯時附加到命令行參數後。配置文件的每一行都相當於一個額外的命令行參數插入到實際的命令行參數前。
6. 命令行編譯器有兩個命令行參數可以生成外部調試信息:MAP文件選項和調試信息選項。
7. 選項-V、-VN和-VR會指示編譯器生成調試信息,它們能在命令行中組合使用。

閱讀全文

與編譯器把指令放在哪裡相關的資料

熱點內容
python代碼覆蓋率工具官網 瀏覽:29
好分數app的考試信息在哪裡 瀏覽:484
程序員與內行語錄 瀏覽:376
清除主窗口屏幕的命令 瀏覽:570
易語言防反編譯器 瀏覽:485
21歲當總裁pdf 瀏覽:257
三菱壓縮機與東芝 瀏覽:63
ecu編程語言 瀏覽:246
lombok程序員 瀏覽:912
md的命令 瀏覽:449
發型p圖素材哪個app可以 瀏覽:791
彈性雲伺服器價格表 瀏覽:387
有關三生三世番外的小說在哪個app 瀏覽:374
cmd打開伺服器地址 瀏覽:387
思域壓縮機型號 瀏覽:859
文件加密轉移 瀏覽:184
3d中的ffd命令點不上 瀏覽:905
球面怎麼編程序 瀏覽:798
怎麼給電腦安裝伺服器系統 瀏覽:124
ndklinux環境配置 瀏覽:947