導航:首頁 > 源碼編譯 > 程序編譯後如何存儲

程序編譯後如何存儲

發布時間:2024-01-22 23:11:15

1. 一個程序編譯完成後在內存中是如何存儲的

不存儲在內存條上,存儲在硬碟上,當需要程序運行時,程序被載入到內存條上。可以去看一下王爽的匯編語言,裡面有關於這個的介紹,看目錄就能找到了

2. c程序代碼寫好後,怎麼保存到電腦里什麼格式

具體如下:

1、第一步,打開C-Free5.0創建一個新的空白頁,然後編寫C語言的基本格式,注意格式縮進,見下圖,然後進入下一步。

3. C語言編程怎麼保存

C語言編程是通過C語言程序編輯軟體上面的文件--保存(或另存為)按鍵或選項,將您編寫的程序保存在您指定的電腦磁碟目錄下的。
如果沒有用編輯軟體編寫的話,則可以直接你要存儲的目錄新建一個文本文檔(*.txt)文件,打開後在裡面編寫你的.C或.H文件,編輯完畢後,點擊文件---保存。同時修改文件名,將.txt文件修改為.C或.H文件,然後載入到C編輯器裡面進行編輯,運行就可以了。

4. 編譯後的exe可執行程序是怎麼存儲的在c++中如何用語句或函數查看程序的存儲代碼

EXE File(可執行程序),一種可在操作系統存儲空間中浮動定位的可執行程序。MS-DOS和MS-WINDOWS下,此類文件擴展名為.exe
WINDOWS操作系統中的二進制可執行文件,可執行文件分兩種一種是後輟名為.COM另一種就是.EXE 。
.COM一般用於DOS,在WINDOWS系統中的執行文件一般都是.EXE文件。在 MS-DOS 中,用以標識可執行文件的文件擴展名。用戶在提示行中輸入不帶 .exe 擴展名的文件名後按 Enter 鍵就能運行可執行程序
EXE 文件比較復雜,每個EXE文件都有一個文件頭,結構如下:
EXE文件頭信息
―――――――――――――――――――
├ 偏移量 ┤意義┤
├00h-01h ┤MZ'EXE文件標記┤
├02h-03h ┤文件長度除512的余數┤
├04h-05h ┤...............商┤
├06h-07h ┤重定位項的個數┤
├08h-09h ┤文件頭除16的商┤
├0ah-0bh ┤程序運行所需最小段數 ┤
├0ch-0dh ┤..............大.... ┤
├oeh-0fh ┤堆棧段的段值 (SS)┤
├10h-11h ┤........sp┤
├12h-13h ┤文件校驗和┤
├14h-15h ┤IP┤
├16h-17h ┤CS┤
├18h-19h ┤............┤
├1ah-1bh ┤............┤
├1ch┤............┤
―――――――――――――――――――――――――
.EXE文件包含一個文件頭和一個可重定位程序映象。文件頭包含MS-DOS用於載入程序的信息,例如程序的大小和寄存器的初始值。文件頭還指向一個重定位表,該表包含指向程序映象中可重定位段地址的指針鏈表。文件頭的形式與EXEHEADER結構對應:
EXEHEADER STRUC
exSignature dw 5A4Dh ;.EXE標志
exExraBytes dw ;最後(部分)頁中的位元組數
exPages dw ;文件中的全部和部分頁數
exRelocItems dw ;重定位表中的指針數
exHeaderSize dw ;以位元組為單位的文件頭大小
exMinAlloc dw ;最小分配大小
exMaxAlloc dw ;最大分配大小
exInitSS dw ;初始SS值
exInitSP dw ;初始SP值
exChechSum dw ;補碼校驗值
exInitIP dw ;初始IP值
exInitCS dw ;初始CS值
exRelocTable dw ;重定位表的位元組偏移量
exOverlay dw ;覆蓋號
EXEHEADER ENDS程序映象
包含處理器代碼和程序的初始數據,緊接在文件頭之後。它的大小以位元組為單位,等於.EXE文件的大小減去文件頭的大小,也等於exHeaderSize的域的值乘以16。MS-DOS通過把該映象直接從文件拷貝到內存載入.EXE程序然後調整定位表中說明的可重定位段地址。
定位表是一個重定位指針數組,每個指向程序映象中的可重定位段地址。文件頭中的exRelocItems域說明了數組中指針的個數,exRelocTable域說明了分配表的起始文件偏移量。每個重定位指針由兩個16位值組成:偏移量和段值。 為載入.EXE程序,MS-DOS首先讀文件頭以確定.EXE標志並計算程序映象的大小。然後它試圖申請內存。首先,它計算程序映象文件的大小加上PSP的大小再加上EXEHEADER結構中的exMinAlloc域說明的內存大小這三者之和,如果總和超過最大可用內存塊的大小。則MS-DOS停止載入程序並返回一個出錯值。如果總和沒超過最大可用內存塊的大小,它便計算程序映象的大小加上PSP的大小再加上EXEHEADER結構中exMaxAlloc域說明的內存大小之和,如果第二個總和小於最大可用內存塊的大小,則MS-DOS 分配計算得到的內存量。否則,它分配最大可用內存塊。分配完內存後,MS-DOS確定段地址,也稱為起始段地址,MS-DOS從此處載入程序映象。如果exMinAlloc域和exMaxAlloc域中的值都為零,則MS-DOS把映象盡可能地載入到內存最高端。否則,它把映象載入到緊挨著PSP域之上。接下來,MS-DOS讀取重定位表中的項目調整所有由可重定位指針說明的段地址。對於重定位表中的每個指針,MS-DOS尋找程序映象中相應的可重定位段地址,並把起始段地址加到它之上。一旦調整完畢,段地址便指向了內存中被載入程序的代碼和數據段。 MS-DOS在所分配內存的最低部分建造256位元組的PSP,把AL和AH設置為載入 .COM程序時所設置的值。MS-DOS使用文件頭中的值設置SP與SS,調整SS初始值,把起始地址加到它之上。MS-DOS還把ES和DS設置為PSP的段地址.最後,MS-DOS從程序文件頭讀取CS和IP的初始值,把起始段地址加到CS之 上,把控制轉移到位於調整後地址處的程序。
具體參考:http://ke..com/view/41812.htm

5. 一個程序編譯完成後在內存中是如何存儲的


如上所說,內存被分成 程序代碼區、堆區、棧區 還有個全局數據區

1.程序代碼區:存放你的全部代碼

2.堆區:存放用new 申請的變數(如 int a = new int(5))

3.棧區;存放int = 5;之類的變數(必須放在函數中)

4.全局數據區:存放全局或靜態變數,即定義在函數外的,或加上static的變數
(如:static int a = 5;)

6. 編寫好一個C語言程序,如何把數據一直保存下來

用數組保存。定義一個數組。

如:int a[6]={1,2,3,4,5,6};

然後輸出

for(i=0;i<6;i++){

printf("%d",a[i]);}

代碼如下:

#include<stdio.h>

int main(){

int a[6]={1,2,3,4,5,6};

int i;

for(i=0;i<=5;i++)

printf("%d ",a[i]);

}

(6)程序編譯後如何存儲擴展閱讀

保存方法二如下:

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

int main()

{

FILE *fp;

char in;

fp = fopen("test.txt","w");

printf("請輸入一個字元串(以!結束): ");

while((in=getchar()) != '!')

{

if(in <='z' && in >= 'a')

{

in -= 32;

}

fputc(in,fp);

}

fclose(fp);

return 0;

}

閱讀全文

與程序編譯後如何存儲相關的資料

熱點內容
小米桌面文件夾亂碼怎麼回事 瀏覽:854
點歌台app怎麼連接 瀏覽:318
大學電腦編程學什麼好 瀏覽:348
上哪裡取消應用加密 瀏覽:172
電氣控制與可編程式控制制器pdf 瀏覽:85
cad圖紙不能跨文件夾粘貼 瀏覽:254
學生雲伺服器主機 瀏覽:885
單片機狀態周期 瀏覽:622
lua中的android 瀏覽:443
加密貴還是植發貴 瀏覽:664
陽光壓縮機繼電器 瀏覽:971
修改阿里雲伺服器密碼 瀏覽:815
lk4102加密晶元 瀏覽:588
怎麼更改app店面 瀏覽:489
設備部門如何做好伺服器 瀏覽:849
androido下載 瀏覽:478
神奇高量戰法副圖源碼 瀏覽:830
匯編語言設計凱撒密碼加密器 瀏覽:392
主次梁加密是加在哪裡 瀏覽:664
模板匹配演算法matlab 瀏覽:825