導航:首頁 > 源碼編譯 > 哪些編譯器可以把c轉換成c

哪些編譯器可以把c轉換成c

發布時間:2023-08-24 06:18:31

Ⅰ 有沒有將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語言有哪些編譯器

1、visualc++6.0(win8系統下不好用,C/C++)-MicrosoftVisualC++;

2、visualstudio(2005、2008、2010、2012、2013)-MicrosoftVisualStudio;

3、win-tc非常方便:不騙你,2000/XP/7都可以用;

4、Code::Blocks(win7、8都可以用);

5、TurbC(只能編譯C語言);

6、gcc(GNU編譯器套件);

7、DEVC++;

8、C-Free;

9、BorlandC++、WaTComC++、BorlandC++Builder、GNUDJGPPC++、Lccwin32CCompiler3.1、HighC、MyTc等,由於C語廳激言比較成熟,所以編程環境很多;

10、還常用souceinsight,在工作中還用Labwindows編程,直接調試運行,不過那是有工程背慎李景,有工作經驗的扮孝襪技術人員用的。


Ⅲ C++編譯器可以編譯C程序嗎

C++編譯器完全兼容C,
如果有C++代碼,又有C代碼,就把源文件保存為.cpp,可以直接編譯,
也可以分開一個.cpp文件,一個.c文件,在一個工程里,可以既有C代碼又可以C++代碼,沒有影響,你甚至可以像#include<XXX.h>一樣,#include<XXXX.c>文件。總之C是C++的一部分。

Ⅳ 編譯c語言可以用c++的編譯器嗎

不可以,比如你用C編譯器能編譯過的,C++編譯器就不一定能編譯過。

main()
{
printf("Hello,world! ");
}

這個代碼在C里能編譯通過,但是C++里會提示錯誤信息:

[Error]'printf'wasnotdeclaredinthisscope

還有很多其他例子。。。

所以,千萬不要用C++的編譯器編譯C代碼。(可能導致意外)

閱讀全文

與哪些編譯器可以把c轉換成c相關的資料

熱點內容
編譯器有幾個好用的 瀏覽:500
資料庫和網站如何搭載伺服器 瀏覽:154
網路流理論演算法與應用 瀏覽:795
java和matlab 瀏覽:388
釘釘蘋果怎麼下app軟體 瀏覽:832
php網站驗證碼不顯示 瀏覽:859
鋁膜構造柱要設置加密區嗎 瀏覽:344
考駕照怎麼找伺服器 瀏覽:884
阿里雲伺服器如何更換地區 瀏覽:972
手機app調音器怎麼調古箏 瀏覽:503
銳起無盤系統在伺服器上需要設置什麼嗎 瀏覽:19
紅旗計程車app怎麼應聘 瀏覽:978
如何編寫linux程序 瀏覽:870
吉利車解壓 瀏覽:248
java輸入流字元串 瀏覽:341
安卓軟體沒網怎麼回事 瀏覽:785
dvd壓縮碟怎麼導出電腦 瀏覽:275
冒險島什麼伺服器好玩 瀏覽:542
如何在伺服器上做性能測試 瀏覽:794
命令序列錯 瀏覽:260