Ⅰ 一個 c 語言應用程序上機過程一般要經過哪幾個步驟
運行程序步驟:
1.編輯:輸入源程序並存檔(.C)
2.編譯:將源程序翻譯為目標文件(.OBJ)
3.鏈接:將目標文件生成可執行文件( .EXE)
4.運行:執行.EXE文件,得到運行結果。
上機1 C語言簡單程序的編寫和調試
拓展資料:
C語言是一門通用計算機編程語言,應用廣泛。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。c 語言應用程序上機過程具體步驟如下:
打開VC++ 6.0程序 2、點「文件」,「新建「。
在新建頁面上選擇文件→C++ Source File 並在右邊編輯文件名稱,選擇保存位置,確定。
簡單程序示範。
滑鼠右鍵Compile(Ctrl+F7)如圖,確定兩次,注意下方可查看錯誤,可上下拉動。確定無錯之後,右鍵Build(F7)如圖,同樣注意下方是否出現問題,最後右鍵BuildExecute(Ctrl+F5)。完成。
Ⅱ 簡述程序的運行過程
執行程序的過程
:
開始執行程序時,必須先給程序計數器PC賦以第一條指令的首地址00H,然後就進入第一條指令的取令的取指令階段。
第一條指令的執行過程:
取指令階段:
①將程序計數器PC的內容(00H)送至地址寄存器AR,記為PC
AR。
②程序計數器PC的內容自動加1變為01H,為取下一個指令位元組作準備,記為PC+1
PC。
③地址寄存器AR將00H通過地址匯流排送至存儲器,經地址解碼器解碼,選中00號單元,記為AR
M。
④CPU發出"讀"命令。
⑤所選中的00號單元的內容B0H讀至數據匯流排DB,記為(00H)
DB。
⑥經數據匯流排DB,將讀出的B0H送至數據寄存器,記為DB
DR。
⑦數據寄存器DR將其內容送至指令寄存器IR,經過解碼,控制邏輯發出招待該條指令的一系列控制信號,記為DR
IR,IR
ID、PLA。經過解碼,CPU"識別"出這個操作碼就是MOV
A,03指令,於是,它"通知"控制器發出執行這條指令的各種控制命令。
Ⅲ 在計算機上運行一個C語言編寫的程序,要經過怎樣的處理過程
開發一個C語言程序需要經過的四個步驟:編輯、編譯、連接、運行。
C語言程序可以使用在任意架構的處理器上,只要那種架構的處理器具有對應的C語言編譯器和庫,然後將C源代碼編譯、連接成目標二進制文件之後即可運行。
1、編輯:輸入源程序並保存(。C文件)。
2、編譯:將源程序翻譯成目標文件(。OBJ文件)。
3、連接:將目標文件轉換成可執行文件。EXE文件)。
4、運行:執行。EXE文件,得到運行結果。
(3)運行程序的步驟與方法擴展閱讀:
C代碼變成程序的階段:
1、首先,源代碼文件test。c和相關的頭文件,如stdio。h,由預處理程序CPP預處理為一個。我的文件。這是預編譯。I文件不包含任何宏定義,因為所有宏都已展開,所包含的文件都已插入其中。我的文件。
2、編譯過程就是對預處理後的文件進行一系列的詞法分析、語法分析、語義分析和優化,從而產生相應的匯編代碼文件。這個過程通常是整個程序構造的核心部分,也是最復雜的部分之一。
3、匯編程序不直接輸出可執行文件,而是輸出目標文件。匯編程序可以調用LD來生成一個可以運行的可執行程序。為了得到最終的可執行文件「A.out」,需要將一大堆文件鏈接在一起。
4、在鏈接過程中,調用其他目標文件中定義的函數的指令需要重新校準,使用其他目標文件中定義的變數的指令也需要重新校準。
Ⅳ C語言源程序到運行程序經過哪幾個步驟
1、預處理
在這一階段,源碼中的所有預處理語句得到處理,例如:#include語句所包含的文件內容替換掉語句本身,所有已定義的宏被展開。
根據#ifdef,#if等語句的條件是否成立取捨相應的部分,預處理之後源碼中不再包含任何預處理語句。
GCC預處理階段可以生成.i的文件,通過選項-E可以使編譯器在預處理結束時就停止編譯。例如:gcc -E -o hello.i hello.c
2、編譯
這一階段,編譯器對源碼進行詞法分析、語法分析、優化等操作,最後生成匯編代碼。這是整個過程中最重要的一步,因此也常把整個過程稱為編譯。
可以通過選項-S使GCC在進行完編譯後停止,生成.s的匯編程序。例如:gcc -S -o hello.s hello.c
3、匯編
這一階段使用匯編器對匯編代碼進行處理,生成機器語言代碼,保存在後綴為.o的目標文件中。
當程序由多個代碼文件構成時,每個文件都要先完成匯編工作,生成.o目標文件後,才能進入下一步的鏈接工作。
目標文件已經是最終程序的某一部分了,只是在鏈接之前還不能執行。可以通過-c選項生成目標文件:gcc -c -o hello.o hello.c
4、鏈接
經過匯編以後的機器代碼還不能直接運行。為了使操作系統能夠正確載入可執行文件,文件中必須包含固定格式的信息頭,還必須與系統提供的啟動代碼鏈接起來才能正常運行,這些工作都是由鏈接器來完成的。gcc -o hello hello.c
5、運行:執行.EXE文件,得到運行結果。
Ⅳ 編寫好一個C程序到完成運行要經過哪幾個步驟
C源程序到運行程序步驟:1.編輯:輸入源程序並存檔(.C)。2.編譯:將源程序翻譯為目標文件(.OBJ)。3.鏈接:將目標文件生成可執行文件( .EXE)。4.運行:執行.EXE文件,得到運行結果。
Ⅵ 程序運行的基本步驟
一、編譯時與運行時的內存情況
1.編譯時不分配內存
編譯時是不分配內存的。此時只是根據聲明時的類型進行佔位,到以後程序執行時分配內存才會正確。所以聲明是給編譯器看的,聰明的編譯器能根據聲明幫你識別錯誤。
2.運行時必分配內存
運行時程序是必須調到「內存」的。因為CPU(其中有多個寄存器)只與內存打交道的。程序在進入實際內存之前要首先分配物理內存。
3.編譯過程
只能簡單說一下,因為如果要詳細的話,就是一本書了《編譯原理》。編譯器能夠識別語法,數據類型等等。然後逐行逐句檢查編譯成二進制數據的obj文件,然後再由鏈接程序將其鏈接成一個EXE文件。此時的程序是以EXE文件的形式存放在磁碟上。
4.運行過程
當執行這個EXE文件以後,此程序就被載入到內存中,成為進程。此時一開始程序會初始化一些全局對象,然後找到入口函數(main()或者WinMain()),就開始按程序的執行語句開始執行。此時需要的內存只能在程序的堆上進行動態增加/釋放了。
各區段功能說明:
1、程序代碼區:存放函數體的二進制代碼。
2、全局區(靜態區)(static):全局變數和靜態變數的存儲是放在一塊的,初始化的全局變數和靜態變數在一塊區域, 未初始化的全局變數和未初始化的靜態變數在相鄰的另一塊區域。 程序結束後由系統釋放。
3、文字常量區 :常量字元串就是放在這里的。 程序結束後由系統釋放。
4、堆區(heap): 一般由程序員分配釋放, 若程序員不釋放,程序結束時可能由OS回收 。注意它與數據結構中的堆是兩回事,分配方式倒是類似於鏈表。
5、棧區(stack):由編譯器自動分配釋放 ,存放函數的參數值,局部變數的值等。其操作方式類似於數據結構中的棧。
Ⅶ java程序運行的五個步驟
1、Java程序從源文件創建到程序運行要經過兩大步驟:1、源文件由編譯器編譯成位元組碼(ByteCode) 2、位元組碼由java虛擬機解釋運行。因為java程序既要編譯同時也要經過JVM的解釋運行,所以說Java被稱為半解釋語言("semi-interpreted" language)。
第一步(編譯): 創建完源文件之後,程序會先被編譯為.class文件。Java編譯一個類時,如果這個類所依賴的類還沒有被編譯,編譯器就會先編譯這個被依賴的類,然後引用,否則直接引用,這個有點像make。如果java編譯器在指定目錄下找不到該類所其依賴的類的.class文件或者.java源文件的話,編譯器話報「cant find symbol」的錯誤。
編譯後的位元組碼文件格式主要分為兩部分:常量池和方法位元組碼。常量池記錄的是代碼出現過的所有token(類名,成員變數名等等)以及符號引用(方法引用,成員變數引用等等);方法位元組碼放的是類中各個方法的位元組碼。
第二步(運行):java類運行的過程大概可分為兩個過程:1、類的載入 2、類的執行。需要說明的是:JVM主要在程序第一次主動使用類的時候,才會去載入該類。也就是說,JVM並不是在一開始就把一個程序就所有的類都載入到內存中,而是到不得不用的時候才把它載入進來,而且只載入一次。
2、下面是程序運行的詳細步驟:
在編譯好java程序得到Main.class文件後,在命令行上敲java Main。系統就會啟動一個jvm進程,jvm進程從classpath路徑中找到一個名為Main.class的二進制文件,將Main的類信息載入到運行時數據區的方法區內,這個過程叫做Main類的載入。
然後JVM找到Main的主函數入口,開始執行main函數。
main函數的第一條命令是Animal animal = new Animal("Puppy");就是讓JVM創建一個Animal對象,但是這時候方法區中沒有Animal類的信息,所以JVM馬上載入Animal類,把Animal類的類型信息放到方法區中。
載入完Animal類之後,Java虛擬機做的第一件事情就是在堆區中為一個新的Animal實例分配內存, 然後調用構造函數初始化Animal實例,這個Animal實例持有著指向方法區的Animal類的類型信息(其中包含有方法表,java動態綁定的底層實現)的引用。
當使用animal.printName()的時候,JVM根據animal引用找到Animal對象,然後根據Animal對象持有的引用定位到方法區中Animal類的類型信息的方法表,獲得printName()函數的位元組碼的地址。
開始運行printName()函數。