Ⅰ 如何將C語言代碼轉換為對應的匯編代碼
VC6.0下有兩種方法:
(1)增加參數/FA:Project->Setting...,C/C++選項卡中的Project Options中增加參數/FA,編譯後debug目錄中將會增加對應源文件的匯編文件(*.asm)。
(2)如果想查看C語句對應的匯編代碼的話,可以這樣:F11單步調試,在debug工具欄中選擇「disassembly」即可。每行C代碼下面就是對應的匯編代碼。
如果debug工具欄不見了,可在VC上方空白菜單處右鍵,選擇「debug」即可彈出debug工具欄。
例如:
C代碼程序:
int main()
{
int a = 3;
int b = 4;
int c = a + b;
printf("c=%d/n", c);
return 0;
}
對應的匯編代碼程序(部分)如下:
5: int a = 3;
00401028 mov dword ptr [ebp-4],3
6: int b = 4;
0040102F mov dword ptr [ebp-8],4
7: int c = a + b;
00401036 mov eax,dword ptr [ebp-4]
00401039 add eax,dword ptr [ebp-8]
0040103C mov dword ptr [ebp-0Ch],eax
gcc下編譯加參數-S,如gcc a.c -S,編譯後會自動生成匯編文件a.asm。
Ⅱ C語言代碼解釋「Hello,world」
#include<stdio.h>
int main()
{
printf("hello world!
");//輸出hello word!
return 1;// 返回1
}
Ⅲ 可以顯示C語言編譯成匯編語言全過程的編譯器
如果你有用IDE的話,比如Visual Studio、Delphi等,應該都是可以設置C和匯編同時查看的。
一句C對應一句匯編,也相當於「單步編譯」吧!
Ⅳ C語言的Hello Word
我用的是Visual Studio 2005(包含C++,其實是vc8.0),如果用vc的話情況應該也是差不多的。下面我就我的使用環境說一下怎麼編譯運行Hello World!
1、從開始菜單或用快捷方式打開vc,菜單file->new->project(或是文件->新建->工程)。
2、在彈出對話框左邊選visual c++,再選win32,右邊選win32 console application(或win32控制台程序),下邊name(或名稱)輸入Helloworld(或你喜歡的名稱,這個是工程的名稱),單擊OK(或確定)。
3、單擊next下一步,或application settings程序設置,application type程序類型選擇console application控制台程序。additional options附加選項里選上Empty project(空工程還是空項目忘記中文了)的勾,單擊finish完成。
4、打開solution explorer解決方案瀏覽(忘記中文的名稱了)(沒有的話可以從view(視圖)->solution explorer里調出),source file源文件右鍵單擊,選add添加new item新項。
5、左邊選code代碼,右邊選C++ file,下面name名稱輸入名稱HelloWorld或你喜歡的,單擊add添加。
6、把代碼拷貝到HelloWorld.cpp中,即把
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
printf ("Hello World!\n");
system ("pause");
return 0;
}
拷貝到HelloWorld.cpp。
7、菜單上選build->build solution(建立->建立解決方案),或按F7亦可。接著在debug->start debuging(調試->開始調試),或按F5亦可。或不按F7直接按F5。不過一般先F7後F5。
這樣就可以編譯運行程序Helloworld了。主要問題是要先新建一個工程。
Ⅳ 有沒有將c語言源代碼轉換成匯編語言的軟體
如果只是想得到C語言或C++語言的匯編代碼
可以通過指定編譯器的選項來達成目的,這里我們用1998年生產的Windows平台VC6.0的SDK舉例(以傳統的命令行編譯環境方式,對應的IDE集成開發環境可在工程》設置里在編譯選項里加入/Fa即可):
開始》運行,輸入cmd啟動命令行,
若安裝了VC6.0的SDK(或其IDE集成開發環境),默認路徑為"C:\Program Files\Microsoft Visual Studio「
命令行輸入"C:\Program Files\Microsoft Visual Studio\VC98\Bin\VCVARS32.BAT"回車執行初始化編譯環境
命令行輸入 mkdir CtoASMTest建立測試目錄,並進入該目錄,命令行輸入 cd CtoASMTest
用記事本建立測試代碼,命令行輸入notepad CtoASM_test.c回車確認,輸入以下測試C代碼
int main(int argc,char* argv[]){
int i;
for(i = 0; i < argc; ++i){
printf("argv[%d] is:\t%s\n",i,argv[i]);
}
printf("CtoASM_test end.\n");
}
若直接默認編譯,命令行輸入cl CtoASM_test.c,則會產生對象文件*.obj和目標文件*.exe
命令行輸入dir 列出測試目錄文件清單如下,多了obj和exe編譯產生的文件
CtoASM_test.c
CtoASM_test.exe
CtoASM_test.obj
若想得到c文件對應的匯編語言文件,可以指定匯編文件產生選項 /Fa,即cl /Fa CtoASM_test.c則會同時產生匯編文件CtoASM_test.asm,內容如下
TITLE CtoASM_test.c
.386P
include listing.inc
if @Version gt 510
.model FLAT
else
_TEXT SEGMENT PARA USE32 PUBLIC 'CODE'
_TEXT ENDS
_DATA SEGMENT DWORD USE32 PUBLIC 'DATA'
_DATA ENDS
CONST SEGMENT DWORD USE32 PUBLIC 'CONST'
CONST ENDS
_BSS SEGMENT DWORD USE32 PUBLIC 'BSS'
_BSS ENDS
_TLS SEGMENT DWORD USE32 PUBLIC 'TLS'
_TLS ENDS
FLAT GROUP _DATA, CONST, _BSS
ASSUME CS: FLAT, DS: FLAT, SS: FLAT
endif
PUBLIC _main
EXTRN _printf:NEAR
_DATA SEGMENT
$SG41 DB 'argv[%d] is:', 09H, '%s', 0aH, 00H
ORG $+3
$SG42 DB 'CtoASM_test end.', 0aH, 00H
_DATA ENDS
_TEXT SEGMENT
_argc$ = 8
_argv$ = 12
_i$ = -4
_main PROC NEAR
; File CtoASM_test.c
; Line 1
push ebp
mov ebp, esp
push ecx
; Line 3
mov DWORD PTR _i$[ebp], 0
jmp SHORT $L37
$L38:
mov eax, DWORD PTR _i$[ebp]
add eax, 1
mov DWORD PTR _i$[ebp], eax
$L37:
mov ecx, DWORD PTR _i$[ebp]
cmp ecx, DWORD PTR _argc$[ebp]
jge SHORT $L39
; Line 4
mov edx, DWORD PTR _i$[ebp]
mov eax, DWORD PTR _argv$[ebp]
mov ecx, DWORD PTR [eax+edx*4]
push ecx
mov edx, DWORD PTR _i$[ebp]
push edx
push OFFSET FLAT:$SG41
call _printf
add esp, 12 ; 0000000cH
; Line 5
jmp SHORT $L38
$L39:
; Line 6
push OFFSET FLAT:$SG42
call _printf
add esp, 4
; Line 7
mov esp, ebp
pop ebp
ret 0
_main ENDP
_TEXT ENDS
END
其中還可以產生其它文件,可以參考編譯器的選項說明,命令行輸入cl /?查看幫助,其中關於產生的輸出文件類型可以有以下選擇
-OUTPUT FILES-
/Fa[file] name assembly listing file /Fo<file> name object file
/FA[sc] configure assembly listing /Fp<file> name precompiled header file
/Fd[file] name .PDB file /Fr[file] name source browser file
/Fe<file> name executable file /FR[file] name extended .SBR file
----------------------------------------------
補充,
其它平台的編譯器也有類似的匯編輸出選項,如類Unix平台的GNU編譯器cc -S CtoASM_test.c和gcc -S CtoASM_test.c 都可以通過指定-S選項產生c或c++代碼對應的匯編語言文件。
Ⅵ C語言編譯後是生成匯編代碼還是直接生成機器代碼
不會是這兩種語言代碼,而是編譯後直接生成二進制文件(.obj文件),再通過連接器鏈接成二進制文件(.exe/.dll/.ocx/.sys等)
Ⅶ C語言怎樣轉換成匯編語言
keilc裡面,如果單片機c語言編譯完成後,可以進入debug模擬模式,那麼打開disassembly
windows窗口,就可以看到c及對應的匯編。
Ⅷ C語言hello,world;
你程序編寫好,用GCC 編譯器 你可以用以下命令查看
gcc hellowold.c -E -o helloworld.i (這個是第一步,預編譯)
gcc helloworld.oi -S -o helloworld.o(這個是編譯)
gcc helloworld -C -o helloworld.o (這個是匯編)
gcc helloworld.o -o a.out 這個是鏈接階段,就是生成結果的階段
Ⅸ 我的c語言代碼如何變成匯編語言
c語言代碼編譯連接後的exe文件用16位編輯器打開看到的就是機器碼,用調試軟體打開看到的是匯編語言代碼。