編譯器多大工作量
Ⅰ 我想做一個C語言編譯器……
沒什麼可不可取的,弄出來的話你的編程水平會有很大的提升,沒弄出來也會,除非你一開始就放棄.
首先不建議你搞x86架構的,當然想挑戰自己也行,因為x86架構的指令格式十分的操蛋.
建議寫arm架構的編譯器,因為指令結構簡單,而且你學了之後做嵌入式方向很有用
工作量相當的大,給你說一下你要點的技能點吧
*數據結構(編程必修)
*編譯原理(理論知識,沒有他你沒法下手)
*了解一種架構的匯編語言(不會的話你不知道怎麼該讓cpu去處理c的語句)
*了解你學的那種架構的匯編語言的指令格式(不翻譯成機器指令cpu咋跑)
*了解一種可執行文件的格式(windows就搜PE文件的格式,linux就搜elf文件的格式,不把編譯出來的東西組織成os能識別的格式咋運行)
*還有需要一定的英文閱讀能力(因為有的資料沒有中文)
還有一定要丟掉老掉牙的vc 6.0和tc,這倆傢伙用來應付考試還行,用他來實際開發你就找虐吧.
Ⅱ gcc 編譯器里的 int 到底范圍是多大
這取決於操作系統而不是編譯器,32位操作系統的int值范圍應該是是+/-2147483647;
malloc能分配多大空間取決於你想申請多大空間;
用gcc --help或者man gcc就可以看到所有的命令參數了.
Ⅲ 編譯器給棧分配的空間是不是2M啊
默認是1m,不過可以設
Ⅳ 編譯原理難嗎
編譯原理我覺得不是最難的,或者是讀得很淺所以不覺得難。在計算機基礎課中最難的我覺得是操作系統,很難很重要,但是很少人會去重視,基本都是草草的上課草草的學了,不得精髓;次之演算法也很難,不止是理論,實際用用也難。
國內985本科編譯能教的大約是半本龍書組成的前端加一個基本的後端,不難。但是實踐的工作量大。認真做一個編譯器至少兩三萬行C++的工作量,只有半個學期的時間,壓力很大。當然,compiler的可玩性不錯,不那麼枯燥。
Ⅳ 匯編語言編程既然效率高、體積小那麼為什麼軟體不用匯編語言編寫呢
匯編通用性差,不同型號的CPU,都會帶來巨大差異,匯編缺乏一個有效的底層管理,編寫的程序會BUG成堆,匯編缺乏各種開發包支持,編復雜的程序幾乎成為不可能,他的缺點根本無法用它的效率彌補,如果真用匯編,反而會因為程序寫的蹩腳,反而運行效率也大大降低。。。只有移植代碼會用會編寫,因為需要他進行硬體隔離,讓軟體編程在邏輯上和硬體無關。。。
雖然所有程序都要有轉化匯編這一條,但是人家都是一個千錘百煉的編譯器在做這個事,可靠性不用懷疑,如果用匯編,這種事就要親自上手,你覺得一個程序員寫的匯編能和編譯器拼可靠性嗎??
編程首要任務是縮短開發周期短,工作量小,至於代碼運行慢,根本就不是個事,高性能CPU一大把,你用匯編導致的工期延長,買幾百CPU沒問題,編程發展到今天,匯編除了進行BUG排查,底層代碼移植,關鍵代碼編寫,需要用,其他都不用。。。因為應用軟體用匯編,幾乎變的不可能,連個有效的開發庫都沒有,算個乘方開方這些數學上的東西都是個問題,你說這程序怎麼編。。。。。
Ⅵ 編譯原理學了有什麼用
對大多數人來說,學過編譯原理,應該可以知道對於很多代碼的優化,編譯器其實可以做好,不需要自己寫代碼的時候杞人憂天。在通用、局部的優化上,甚至編譯器往往做得比程序員好。
大概率會意識到編譯原理背後的故事,也許會沉迷在某個方向,也許還會樂於看一些奇妙的parser構建方式。
大概還可能會去學習類型系統,發現形式化的故事似乎在很多方面都有對應的版本,而後,他們也許會嘗試走向研究,去挑戰目前都沒有好好解決的代碼優化問題,也許會走向應用,用起LLVM,在上面加個target,支持一些新硬體,做個新語言的前端等。

編譯原理是計算機專業的一門重要專業課,旨在介紹編譯程序構造的一般原理和基本方法。內容包括語言和文法、詞法分析、語法分析、語法制導翻譯、中間代碼生成、存儲管理、代碼優化和目標代碼生成。 編譯原理是計算機專業設置的一門重要的專業課程。
編譯原理課程是計算機相關專業學生的必修課程和高等學校培養計算機專業人才的基礎及核心課程,同時也是計算機專業課程中最難及最挑戰學習能力的課程之一。編譯原理課程內容主要是原理性質,高度抽象。
編譯可以分為五個基本步驟:詞法分析、語法分析、語義分析及中間代碼的生成、優化、目標代碼的生成。這是每個編譯器都必須的基本步驟和流程, 從源頭輸入高級語言源程序輸出目標語言代碼。
1、詞法分析
詞法分析器是通過詞法分析程序對構成源程序的字元串從左到右的掃描, 逐個字元地讀, 識別出每個單詞符號, 識別出的符號一般以二元式形式輸出, 即包含符號種類的編碼和該符號的值。
詞法分析器一般以函數的形式存在, 供語法分析器調用。當然也可以一個獨立的詞法分析器程序存在。完成詞法分析任務的程序稱為詞法分析程序或詞法分析器或掃描器。
2、語法分析
語法分析是編譯過程的第二個階段。這階段的任務是在詞法分析的基礎上將識別出的單詞符號序列組合成各類語法短語, 如「語句」, 「表達式」等.語法分析程序的主要步驟是判斷源程序語句是否符合定義的語法規則, 在語法結構上是否正確。
而一個語法規則又稱為文法, 喬姆斯基將文法根據施加不同的限制分為0型、1型、2型、3型文法, 0型文法又稱短語文法, 1型稱為上下文有關文法, 2型稱為上下文無關文法, 3型文法稱為正規文法, 限制條件依次遞增。
3、語義分析
詞法分析注重的是每個單詞是否合法, 以及這個單詞屬於語言中的哪些部分。語法分析的上下文無關文法注重的是輸入語句是否可以依據文法匹配產生式。
那麼, 語義分析就是要了解各個語法單位之間的關系是否合法。實際應用中就是對結構上正確的源程序進行上下文有關性質的審查, 進行類型審查等。
4、中間代碼生成與優化
在進行了語法分析和語義分析階段的工作之後, 有的編譯程序將源程序變成一種內部表示形式, 這種內部表示形式叫做中間語言或中間表示或中間代碼。
所謂「中間代碼」是一種結構簡單、含義明確的記號系統, 這種記號系統復雜性介於源程序語言和機器語言之間, 容易將它翻譯成目標代碼。另外, 還可以在中間代碼一級進行與機器無關的優化。
5、目標代碼的生成
根據優化後的中間代碼, 可生成有效的目標代碼。而通常編譯器將其翻譯為匯編代碼, 此時還需要將匯編代碼經匯編器匯編為目標機器的機器語言。
6、出錯處理
編譯的各個階段都有可能發現源碼中的錯誤, 尤其是語法分析階段可能會發現大量的錯誤, 因此編譯器需要做出錯處理, 報告錯誤類型及錯誤位置等信息。
Ⅶ Linux系統下C語言編譯器
vs系列既然叫studio,就說明他是集成了所有東西。
GCC僅僅是compiler collection,編譯器的集合,如果需要搞成IDE,還需要其他軟體配合。我現在使用gcc+vim+gdb
也正是因此,我才感覺到vi的確是功能強大。
隨便搜了個帖子,希望對你有所幫助
http://hi..com/mikeking20031/blog/item/954b6d06e12f587e03088160.html
Ⅷ C語言編譯器是什麼
C語言是一門面向過程的計算機編程語言,與C++、Java等面向對象編程語言有所不同。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、僅產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。C語言描述問題比匯編語言迅速,工作量小、可讀性好,易於調試、修改和移植,而代碼質量與匯編語言相當。C語言一般只比匯編語言代碼生成的目標程序效率低10%~20%。因此,C語言可以編寫系統軟體。[2]
二十世紀八十年代,美國國家標准局為了避免各開發廠商用的C語言語法產生差異,給C語言制定了一套完整的美國國家標准語法,稱為ANSI C。作為C語言最初的標准。[3]2011年12月8日,國際標准化組織(ISO)和國際電工委員會(IEC)發布的C11標準是C語言的第三個官方標准,也是C語言的最新標准,該標准更好的支持了漢字函數名和漢字標識符,一定程度上實現了漢字編程。
C語言編譯器普遍存在於各種不同的操作系統中,例如Microsoft Windows, Mac OS X, Linux, Unix等。C語言的設計影響了眾多後來的編程語言,例如C++、Objective-C、Java、C#等。
例:
#include <stdio.h>
int main() {
printf("Hello,world!");
return 0;
}
編譯運行將輸出: Hello,world!
Ⅸ 51單片機程序空間大小
AT89C52的程序空間是8KB是確認無疑的,但指的是存放純二進制的機器碼,就是二進制數。而KeilC編譯的HEX代碼文件並不是純二進制數,是以ASCII碼格式存放的文件,而且其中還有一些編譯信息,如地址、校驗和等。所以,不能看HEX文件的大小來確定下載到單片機內的真正的程序空間大小,也就是說HEX文件的大小並不是真正下載的單片機的程序大小。而下載到單片機的代碼空間大小要看Keilc編譯時給出的代碼數的提示,才是真正要下載到單片機內的代碼空間。舉個例子,下圖是一個程序編譯後的提示,真正的二進制代碼是337個位元組,而HEX文件卻是1KB。這里還有一個誤區,你看到的HEX文件的大小是操作系統給出的大小吧,它是取整KB的,就是說HEX文件不足1KB時,也顯示是1KB。
再明確一點說吧,假如編譯後的代碼是750418,用純二進制數(即BIN格式,有些匯編程序的編譯器輸出的就是BIN格式)的代碼保存就是3個位元組,而用HEX格式保存就是6個位元組,因為要用6個ASCII碼來表示。這來算來,HEX文件大小是BIN文件的二倍,加上一些地址信息,是大於二倍的。
好,回到你的問題來,你的HEX文件是19KB,你看一下編譯後的代碼大小提示,肯定是不會超過8KB的,否則編譯時肯定會報錯的。

Ⅹ 正規的GCC大概多少MB
你好,
本詞條缺少信息欄、名片圖,補充相關內容使詞條更完整,還能快速升級,趕緊來編輯吧!
GCC(GNU Compiler Collection,GNU編譯器套裝)是一套由GNU工程開發的支持多種編程語言的編譯器。GCC是自由軟體發展過程中的著名例子,由自由軟體基金會以GPL協議發布。GCC是大多數類Unix操作系統(如Linux、BSD、Mac OS X等)的標準的編譯器,GCC同樣適用於微軟的Windows。GCC支持多種計算機體系晶元,如x86、ARM,並已移植到其他多種硬體平台。GCC原名為GNU C編譯器(GNU C Compiler),因為它原本只能處理C語言。GCC很快地擴展,並支持處理C++。後來又擴展能夠支持更多編程語言,如Fortran、Pascal、Objective-C、Java、Ada、Go等。
GCC(Gulf Cooperation Council),海灣合作委員會英文簡稱,詳見網路詞條。
本身不大
