① 我想做一個C語言編譯器……
沒什麼可不可取的,弄出來的話你的編程水平會有很大的提升,沒弄出來也會,除非你一開始就放棄.
首先不建議你搞x86架構的,當然想挑戰自己也行,因為x86架構的指令格式十分的操蛋.
建議寫arm架構的編譯器,因為指令結構簡單,而且你學了之後做嵌入式方向很有用
工作量相當的大,給你說一下你要點的技能點吧
*數據結構(編程必修)
*編譯原理(理論知識,沒有他你沒法下手)
*了解一種架構的匯編語言(不會的話你不知道怎麼該讓cpu去處理c的語句)
*了解你學的那種架構的匯編語言的指令格式(不翻譯成機器指令cpu咋跑)
*了解一種可執行文件的格式(windows就搜PE文件的格式,linux就搜elf文件的格式,不把編譯出來的東西組織成os能識別的格式咋運行)
*還有需要一定的英文閱讀能力(因為有的資料沒有中文)
還有一定要丟掉老掉牙的vc 6.0和tc,這倆傢伙用來應付考試還行,用他來實際開發你就找虐吧.
② 正常編寫的c語言程序編譯器會自動進行針對特定指令集用匯編語言優化嗎
這個要看你使用什麼編譯器了。查看編譯器的幫助文檔,它會告訴你它支持那些指令集,並且做哪些可能的優化。
不同的編譯器,是不一樣的。
補充:GCC 不太清楚,你連VC++的版本都不說。汗,VC6是不支持SSE的,需要安裝VC6SP5。
VS2005 和 VS2008 都支持 SSE。對 SSE/MMX 指令集優化得最好的,還是 Intel 的 c++ 編譯器。
對並行和高性能計算,Fortran 的優勢比較大。特別是 Fortran2003 的新特徵,為並行計算做了很多專門的設定。Intel 也有 Fortran 的編譯器。
③ c++編譯器都能編譯C嗎
可以的! 但是部分字元串方面需要轉換,還有宏的定義等 C++編譯器一般用VC6.0,就是Visual studio 2005 現在可能用2010了吧
④ C++編譯器可以編譯C程序嗎
為什麼不早說是VC++2010,用它編譯C語言程序的方法如下:
File->New->Project
在打開的New Project對話框中最左側一欄中選擇Visual C++下面的CLR,之後在其右側的區域中選擇CLR Empty Application
並在下面的三個文本框中填入工程名稱(Name),工程位置(Location)以及解決方案名稱(Solution Name)
之後單擊OK
然後可以解決方案瀏覽器中看到剛才新建的工程,右擊工程名,選擇Properties(屬性),在打開的對話框中選擇Configuration Properties(配置屬性)下面的General(一般),然後將右邊對話框中的Common Language Runtime Support(CLR支持)改為"No Common Language Runtime Support",然後點擊確定退出
接下來右擊工程中的Source Files,選擇Add->New Item...,在打開的對話框中選擇「C++ File(.cpp)",並在下方輸入一個以.c結尾的文件名,之後點擊Add,之後就可以在這個文件中加入C語言代碼,按F5就可以調試運行了。
⑤ C語言編寫好代碼後,怎麼編譯,最後生成可執行文件
材料/工具:vc6.0
1、打開c語言編輯工具,在工具中寫入程序的源代碼。
⑥ 什麼是c編譯器有什麼用,可以用它來寫C語言嗎
所謂c語言編譯器,就是把編程得到的文件,比如.c,.h的文件,進行讀取,並對內容進行分析,按照c語言的規則,將其轉換成系統可以執行的二進制文件。
其本質在於對文件的讀入,分析,及處理。這些操作,c語言都是可以實現的。
所以用c語言來做c語言的編譯器是完全可行的。
但是,歷史上的第一個c語言編譯器,肯定不是c語言寫的,因為在沒有編譯器時,無法把c語言轉換成可執行文件。
只要有了第一版其它語言的編譯器,就可以用c語言寫編譯器了。
事實上,目前大多數的c語言編譯器,都是用c語言寫的。
⑦ c++編譯器都有什麼,怎麼可以用命令行編譯c++,怎樣學習c++,c++和vc++的區別是什麼
c++的編譯器常見的有 微軟的, GCC(linux下最常用的,也有windows版本,叫mingw) 和 intel的(intel有不少好東西,對性能要求高的話可以考慮)
但是集成開發環境就多了 微軟的 visual studio (VC6 VC2005 VC2008)系列,也可以把intel的編譯器掛到VS下面,取代微軟的編譯器,dev-c++ 和 codeblocks 這兩個用的都是用的GCC的編譯器。
windows下 ,最好不用命令行編譯很麻煩的,大一點的項目還要寫makefile來管理,linux下 g++ -o file file.cc 然後 ./file 就能執行剛才的程序了
學C++ 多練 多寫代碼 找本好的參考書 比如 c++ primer ,教材隨便找本就行了 網上可以下到電子書的
c++是一門語言 而VC++通常指的是微軟為了開發windows下的圖形界面程序,而給出的一些API函數,以及封裝了這些API函數的MFC庫,它們的語法是C++的語法。C++在linux下可以照常使用,但VC++到了linux下就沒法用了,因為linux下沒有MFC庫,當然它也有自己的一些圖形庫
⑧ C++程序進行編譯後會生成C語言代碼還是匯編代碼
不是匯編輸出,更不是機器代碼,而是鏈接器輸出
當然不是機器代碼,否則這個程序就可以在無操作系統環境下跑,或是在windows下編譯出的exe能夠在unix上跑,這當然是不對的。
(當然有直接生成機器碼的編譯器,不過不是我們常見的)
實際上編譯出的程序是操作系統相關的,那是因為不同的操作系統的函數庫是不相同的。編譯器就是將程序與操作系統的函數庫鏈接(比如屏幕的顯示,鍵盤的輸入等)。當然只會有少量機器碼。
⑨ c語言的編譯與處理器的指令集有關嗎一定要CISC嗎RISC可不可以
C語言只是用於描述問題和演算法的一種語言,而在實際機器上真實運行的卻是各處理器自己的機器指令。編譯器的工作就是將C語言翻譯為機器指令。對你的問題答復如下:1. C語言與指令系統沒有關系,但是編譯器翻譯的指令與指令系統有關系;2.無論CISC還是RISC,編譯器都可以將C語言翻譯為對應的機器指令。
⑩ 相同的c語言代碼,在不同的編譯器,不同的操作系統上面生成的指令是不是不同的
不同的CPU生成的指令不一樣、不同的編譯器C語言實現方式不一樣、不同的操作系統API不一樣。使用C語言只能做到源代碼級別的跨平台和跨編譯器。