跟大家分享一個(gè)我做的單片機(jī)C語言編譯器。它的功能和keil軟件差不多,能把C語言
轉(zhuǎn)換成單片機(jī)的匯編程序。不過目前還不完善,只支持MCS51系列的單片機(jī),等以后有時(shí)間
我會把這個(gè)編譯器移植到AVR和PIC系列的單片機(jī)上。雖然C語言很流行,但我個(gè)人感覺C的一些
細(xì)微地方并不適合單片機(jī),因此在設(shè)計(jì)這個(gè)編譯器時(shí),有些語法和標(biāo)準(zhǔn)C有區(qū)別。例如,
這個(gè)編譯器擴(kuò)展了移位運(yùn)算,移位時(shí)可以指定空出的位是用0還是1填充,也可以循環(huán)移位,
分別用 <<- <<+ <<< 等運(yùn)算表示,還提供了一種擴(kuò)展的控制語句: loop 。使用時(shí)
就像下面這樣:
loop( 8 )
{
語句a
}
表示執(zhí)行8次語句a。實(shí)際是用djnz指令實(shí)現(xiàn)的,所以效率比for語句高。
對于變量類型則不再用標(biāo)準(zhǔn)C的char short long int 等名稱,而是int+數(shù)字或uint+數(shù)字形式,
分別表示相應(yīng)長度的有符號數(shù)和無符號數(shù)。例如下面的定義:
uint8 a = 0b00001111;//定義8位(一個(gè)字節(jié))的無符號數(shù),可以用二進(jìn)制
int16 b = 12345;//定義16位(兩個(gè)字節(jié))有符號數(shù)
bit c = high;//定義位變量,賦值為1
bool 游戲結(jié)束 = true;//定義布爾類型變量
(標(biāo)識符、文件名和文件夾等可以任意取名,這個(gè)編譯器非常支持中文 ^_^)
另外增加了一個(gè)特別的類型--“元件類型”,例如這樣定義一個(gè)元件類型:
box s24c256 [uint16*8]
{
interface void set( uint16 addr, uint8 data )
{
...
}
interface uint8 get( uint16 addr )
{
...
}
}
其中set函數(shù)用來把一個(gè)字節(jié)變量data通過IIC總線寫入24c256中,而get函數(shù)用來讀取
地址為addr的那個(gè)存儲單元的數(shù)據(jù)。只要定義了這個(gè)元件,就可以在外部的24c256中
定義變量和數(shù)組、結(jié)構(gòu)體等,例如:
s24c256 uint8 data = 0b00001111;//在24c256中定義8位無符號數(shù)data并賦值15。
data可以像一般變量那樣參與運(yùn)算。當(dāng)運(yùn)算中需要讀取data的值時(shí),編譯器會自動(dòng)調(diào)用
get函數(shù)獲取值,當(dāng)運(yùn)算中需要改變data的值時(shí)(如賦值運(yùn)算data = 34 )編譯器會
自動(dòng)調(diào)用set函數(shù)把34寫入到24c256中,用法和普通的變量完全一致。非常方便。
實(shí)際上只要一個(gè)電子元件中可以存放數(shù)據(jù),你就可以在那里定義數(shù)據(jù),如把一個(gè)數(shù)組定義
到一個(gè)128*64液晶屏顯存中,那對這個(gè)數(shù)組操作時(shí)屏幕會有相應(yīng)的變化,甚至可以在
另一個(gè)單片機(jī)中定義一個(gè)數(shù)組,只要用set和get封裝了串口通信程序,就可以在其他單片機(jī)
中讀取和修改這個(gè)數(shù)組的各元素,很有意思吧!
一個(gè)源程序由若干個(gè)這樣的元件類型組成,每個(gè)元件中都可以定義靜態(tài)變量、函數(shù)和接口等,
每個(gè)成員都可以帶有public或private修飾符,當(dāng)為public類型時(shí)表明這個(gè)函數(shù)或靜態(tài)變量
可以在任意地方訪問,當(dāng)為private類型時(shí)只能被同一元件中的函數(shù)訪問。
實(shí)際上這種新增的元件類型作用非常大,通過它還能實(shí)現(xiàn)位變量的數(shù)組定義等。目前
我正在想辦法把元件類型用于庫函數(shù)的配置,因?yàn)橄乱徊轿艺诖蛩銥檫@個(gè)編譯器添加
庫函數(shù)集合,這里的庫函數(shù)不是通常的編譯系統(tǒng)自帶的字符串操作、各種浮點(diǎn)運(yùn)算等函數(shù),
而是其他電子元件的驅(qū)動(dòng)程序,如24c系列的讀寫函數(shù)、溫度檢測ds18b20的讀寫函數(shù)、
ds1302計(jì)時(shí)芯片的讀寫和液晶屏1602、128*64等接口函數(shù)。但現(xiàn)在有一個(gè)問題是這些函數(shù)
都不是用#include包含之后就可以直接使用的,都要先進(jìn)行配置,如24c系列存儲器
函數(shù)需定義SCK和SDA對應(yīng)單片機(jī)的哪兩個(gè)引腳,液晶1602的數(shù)據(jù)線怎樣和單片機(jī)連接等。
而這些配置應(yīng)在用戶程序中實(shí)現(xiàn),而不是進(jìn)入庫函數(shù)文件夾修改庫函數(shù)。我打算這樣實(shí)現(xiàn):
庫函數(shù)由若干個(gè)元件定義如液晶屏元件,ds18b20元件等組成,當(dāng)需要使用哪個(gè)元件時(shí)
用#include包含進(jìn)來,而每個(gè)元件的配置變量分別用一個(gè)“配置元件”定義,當(dāng)然這個(gè)定義
是由用戶編寫的,也就是說庫函數(shù)會反向訪問用戶的程序和數(shù)據(jù)。完整方式如下:
文件 test.c:
#include "AT24C256.h";
box main
{
void main()
{
AT24c256 uint16 data = 34;//在24c256中定義一個(gè)16位無符號數(shù)
while( true ) {}
}
}
box AT24c256_port //配置元件名稱應(yīng)為主元件名 + port
{
public bit SCK = &P1_0;
public bit SDA = &P1_1;
}
預(yù)計(jì)過年后給大家提供的下一個(gè)版本將會實(shí)現(xiàn)這種帶庫函數(shù)的編譯器,因?yàn)閹旌瘮?shù)會反向訪問
用戶函數(shù)和數(shù)據(jù),所以庫函數(shù)將會以源代碼的方式存放,而不像傳統(tǒng)編譯器那樣以obj形式存放。
這樣將會非常方便,代價(jià)僅僅是稍微增加了編譯時(shí)間而已。
到目前為止,這個(gè)編譯器還有些其他語法尚未實(shí)現(xiàn),生成的hex代碼也沒有進(jìn)行任何優(yōu)化,
現(xiàn)在只是從“概念”上實(shí)現(xiàn)這種編程語言,至于優(yōu)化則是以后的事情了。其他說明都在
編譯器文件夾中,大家可以下載了看看。注意這個(gè)編譯器是用C#設(shè)計(jì)的,本身不需要安裝,
隨便復(fù)制到哪個(gè)文件夾下都行,但運(yùn)行需要微軟的.NET環(huán)境,需要在網(wǎng)上搜一個(gè)netframework
安裝之后編譯器才能用(估計(jì)vista和win7的已經(jīng)內(nèi)置.NET 就不需安裝了,不過沒試過)。
希望各位高手有時(shí)間可以幫我測試一下,另外在語法方面我都想的頭疼了,大家應(yīng)該集思廣益嘛,有好的建議可以郵箱聯(lián)系:xbd2048@qq.com。讓我們共同設(shè)計(jì)一個(gè)單片機(jī)專用的編程語言.
順便再給大家拜個(gè)年 ^_^
網(wǎng)友評論:拍塊磚,C語言編譯器這東西,想做到很實(shí)用,難,做得差不多時(shí),宜爭取商業(yè)贊助,方能做大做強(qiáng)。
網(wǎng)友評論:to 23樓 HWN: 我也知道這種語言其實(shí)很難得到大家的認(rèn)可,但這個(gè)編譯器和相應(yīng)的語法我會一直開發(fā)下去.
0xCC 發(fā)表于 2010-1-26 11:01
做C編譯器沒問題,隨著新的CPU的出現(xiàn)還會誕生很多針對某CPU的編譯器。你的問題是“創(chuàng)造新的C”,由于標(biāo)準(zhǔn)具有唯一性(否則就不是標(biāo)準(zhǔn)了),這就把你自己放在了一個(gè)非常不合時(shí)宜的位置。如果那玩意兒早誕生幾十年,也許標(biāo)準(zhǔn)就是你的了。
建議你改個(gè)名字,如C!什么的都行,至于那玩意兒能否成為標(biāo)準(zhǔn),這就看你的造化了,不是沒那可能。
網(wǎng)友評論:終于看到了傳說中的牛,膜拜一下
我覺得樓主做的至少對自己來說很有意義,做一個(gè)編譯器可不是那么簡單,詞法分析,就這一條就夠搞的了。當(dāng)然,這不是重點(diǎn)。
支持一個(gè)!
網(wǎng)友評論:TO computer00:在keil中是,不過我設(shè)計(jì)的這個(gè)編譯器控制語句中的表達(dá)式必須返回布爾類型, 所以目前還不能那樣寫.呵呵
0xCC 發(fā)表于 2010-1-26 10:27
那我改成
i=9;
while(--i!=0)
{
}
呢
網(wǎng)友評論:那我改成
i=9;
while(--i!=0)
{
}
呢
lxyppc 發(fā)表于 2010-1-26 12:40
呵呵,真是不好意思,我的語法中禁止改變操作數(shù)的運(yùn)算有返回值,所以++i和--i還有賦值語句都只能單獨(dú)使用了,但這樣處理之后基本就杜絕了標(biāo)準(zhǔn)C語言的邊際效應(yīng),變量不會在運(yùn)算中被莫名其妙的改變,提高了代碼的安全性.
網(wǎng)友評論:跟著標(biāo)準(zhǔn)好,能做51就能做別的,你按標(biāo)準(zhǔn)做,市場就大,換句話說,容易找到新MCU廠家來買你的代碼,
據(jù)說微軟從前就是這樣發(fā)家的
或者,可以考慮一下,自動(dòng)生成代碼,也是一個(gè)好的發(fā)展方向
網(wǎng)友評論:23#
我建議你現(xiàn)在立馬停止寫了。
主要弄弄大方向!
看看你的非標(biāo)準(zhǔn)有沒有市場價(jià)值
如果你慎重考慮覺得你的非標(biāo)準(zhǔn)有市場價(jià)值 ,然后再繼續(xù)寫。
如果覺得沒有市場價(jià)值,就按照標(biāo)準(zhǔn)重新寫!
網(wǎng)友評論:肯定有用!
支持樓主,支持!支持!
網(wǎng)友評論:牛!
網(wǎng)友評論:樓主真牛!
網(wǎng)友評論: 23# HWM
我建議你現(xiàn)在立馬停止寫了。
主要弄弄大方向!
看看你的非標(biāo)準(zhǔn)有沒有市場價(jià)值
如果你慎重考慮覺得你的非標(biāo)準(zhǔn)有市場價(jià)值 ,然后再繼續(xù)寫。
如果覺得沒有市場價(jià)值,就按照標(biāo)準(zhǔn)重新寫! ...
xlsbz 發(fā)表于 2010-1-26 13:14
把非標(biāo)準(zhǔn)改成標(biāo)準(zhǔn)的應(yīng)該很容易了,直接修改語法樹部分就行.但現(xiàn)在問題是
一邊是標(biāo)準(zhǔn)語法,另一邊是實(shí)用語法,就比如補(bǔ)1移位,補(bǔ)0移位和循環(huán)移位,這在單片機(jī)
開發(fā)中非常有用吧,而且很容易實(shí)現(xiàn),但為了標(biāo)準(zhǔn)就必須全用算術(shù)移位 >> << 實(shí)現(xiàn),
感覺有點(diǎn)別扭. 至少目前來說,不想放棄這些非標(biāo)準(zhǔn)語法
網(wǎng)友評論:36#
現(xiàn)在感覺改起來容易!
蓋迪拜大廈,還沒有開始蓋,建筑圖紙 你想怎么改都行。
等住上人了,怎么改都不行!那就晚啦
現(xiàn)在你覺得 ...在開發(fā)中有用,等兩年可能就覺得自己考慮的太膚淺了。
盡管真理有時(shí)會掌握在少數(shù)人手里,但大多數(shù)情況并不如此。
網(wǎng)友評論:呵呵,真是不好意思,我的語法中禁止改變操作數(shù)的運(yùn)算有返回值,所以++i和--i還有賦值語句都只能單獨(dú)使用了,但這樣處理之后基本就杜絕了標(biāo)準(zhǔn)C語言的邊際效應(yīng),變量不會在運(yùn)算中被莫名其妙的改變,提高了代碼的安全性. ...
0xCC 發(fā)表于 2010-1-26 12:52
那我再改成
i=9;
while(i!=0)
{
i--;
}
呢
網(wǎng)友評論:樓主絕對牛人,贊一個(gè),可是這不是標(biāo)準(zhǔn)呀,只能自己想玩的時(shí)候玩一下。。。
網(wǎng)友評論:強(qiáng)人,在21第一次看到這樣的強(qiáng)人。。。。
網(wǎng)友評論:"標(biāo)準(zhǔn)"的寫法:
i=9;
while( i != 0 )
{
i--;
}
或是
loop(8)
{
}
延時(shí)一秒可以這樣寫:
loop( 250 ) loop( 250 ) {}
其實(shí)我主要不是為了爭論這個(gè)loop, 如果有時(shí)間不妨看看其中相對于C語言新增的"元件類型",我認(rèn)為那才是這個(gè)編譯器的最重要功能.
網(wǎng)友評論:"標(biāo)準(zhǔn)"的寫法:
其實(shí)我主要不是為了爭論這個(gè)loop, 如果有時(shí)間不妨看看其中相對于C語言新增的"元件類型",我認(rèn) ...
0xCC 發(fā)表于 2010-1-26 14:15
我也不是在爭這個(gè)loop的寫法
我只是想確認(rèn)一下一些現(xiàn)有的代碼能不能用你的這個(gè)編譯器來編譯
因?yàn)槲艺J(rèn)為這才是這個(gè)編譯器重要的功能
網(wǎng)友評論:不能啊,只能修改代碼了. 不過我想,如果編譯器能移植到AVR和PIC上,那么代碼將不必進(jìn)行任何改動(dòng)(或僅修改端口)就能正常工作,這樣也不錯(cuò).
網(wǎng)友評論:不能啊,只能修改代碼了. 不過我想,如果編譯器能移植到AVR和PIC上,那么代碼將不必進(jìn)行任何改動(dòng)(或僅修改端口)就能正常工作,這樣也不錯(cuò).
0xCC 發(fā)表于 2010-1-26 14:30
呵呵,當(dāng)年C++出來都不敢這么說啊
樓主可要想清楚了
網(wǎng)友評論:電腦和單片機(jī)編程是兩回事么. 對于移植性,我是這么考慮的, 即所有類型都有固定的長度,如uint8是8位無符號數(shù),
int16是16位無符號數(shù),通過編譯器不論在哪種單片機(jī)上都有相同的結(jié)果. 實(shí)際上編程時(shí)就好像在一個(gè)虛擬的單片機(jī)上運(yùn)行一樣,換成另一種單片機(jī)時(shí),只要編譯器提供了相同的變量類型和語法,源程序就不需改動(dòng)了. 而標(biāo)準(zhǔn)C變量類型的長度不是確定的,就不太好移植.
網(wǎng)友評論:但是你的編譯器還是不能編譯現(xiàn)有代碼啊
像我比較懶,要寫什么程序的時(shí)候先去幾大芯片廠的網(wǎng)站看看有沒有現(xiàn)成的AppNote
有的話直接就拿過來用了,一般只需要改改配置什么的
網(wǎng)友評論:我會在下一版本中增加一個(gè)功能齊全的函數(shù)庫,其中包含24c256,ds18b20等常見芯片的驅(qū)動(dòng)程序.
而且會提供一種專門的語法來處理庫函數(shù)的配置問題
網(wǎng)友評論:記住 不要玩!!
開發(fā)國產(chǎn)編譯器的大任就降落在樓主的身上了!!______同意17樓的意見。
網(wǎng)友評論:唉……
看來還是得繼續(xù)用keil
樓主努力啊!
網(wǎng)友評論:現(xiàn)在語言有那么多種.你還是看看發(fā)展史吧.
還有國外代碼的層次架構(gòu).
啥優(yōu)勢都想占,往往是什么都占不到.
網(wǎng)友評論:還是先完成至少能編譯像UCOSII那樣的源碼,并且測試正常之后再考慮新的擴(kuò)展功能。
網(wǎng)友評論:還是嚴(yán)格支持C的標(biāo)準(zhǔn)好,因?yàn)榈胶竺鏁l(fā)覺,自定義的東西很難推廣開。
早幾年前我寫FinC就碰到了類似的問題,所以到了RT-Thread里的finsh shell,就嚴(yán)格使用C的方式。編譯器方面,前端語法實(shí)際上是非常小非常小的一方面,優(yōu)化是功力所在,然后是各種各樣的后端支持。
網(wǎng)友評論:學(xué)習(xí)了
網(wǎng)友評論:樓主做的嘗試不錯(cuò)。
只是,現(xiàn)在C語言編譯器不少呵,就算只玩C51,多數(shù)人也就算個(gè)大眾化的IDE直接弄了。
隨便提的建議:
要是整成這樣:圖形化編程,最好能和別的軟件做接口,比方Matlab/Simulink,弄個(gè)框圖,一編譯,直接下載到MCU運(yùn)行。這種“
硬件在回路”的東西現(xiàn)在還是有些市場的,至少專門做控制算法的一些人能用得上。國外這東西現(xiàn)在賣得爆貴。。呵呵。
網(wǎng)友評論:樓主做的嘗試不錯(cuò)。
只是,現(xiàn)在C語言編譯器不少呵,就算只玩C51,多數(shù)人也就算個(gè)大眾化的IDE直接弄了。
cauhorse 發(fā)表于 2010-1-26 18:31
呵呵,我的目標(biāo)是設(shè)計(jì)一個(gè)和任何單片機(jī)無關(guān)的編譯器,也就是說編譯器的語法對于每種單片機(jī)都是完全一致的,這樣一種單片機(jī)上的程序有可能不做改動(dòng)就能在另一種單片機(jī)上運(yùn)行,例如在MCS51上編了個(gè)俄羅斯方塊,只要編譯器移植到AVR上,那么這個(gè)俄羅斯方塊程序不用修改就可以在AVR中運(yùn)行.多好啊!以后就向著這個(gè)方向努力!
網(wǎng)友評論:
不錯(cuò),強(qiáng)人很多...
用什么打開呢?
網(wǎng)友評論:樓主做得很不錯(cuò)。
網(wǎng)友評論:21里面確實(shí)藏龍臥虎,以后要多逛逛
網(wǎng)友評論:好樣的,我們也在做編譯器,我們聊聊。QQ563996855
網(wǎng)友評論:牛人啊,寫編譯器需要很高深的理論基礎(chǔ)吧
網(wǎng)友評論:呵呵,我的目標(biāo)是設(shè)計(jì)一個(gè)和任何單片機(jī)無關(guān)的編譯器,也就是說編譯器的語法對于每種單片機(jī)都是完全一致的,這樣一種單片機(jī)上的程序有可能不做改動(dòng)就能在另一種單片機(jī)上運(yùn)行,例如在MCS51上編了個(gè)俄羅斯方塊,只要編譯器 ...
0xCC 發(fā)表于 2010-1-26 18:47
你說的這個(gè)和當(dāng)年JAVA初衷是一樣的,所以后面多了個(gè)JAVA的虛擬機(jī),你不會也來個(gè)虛擬機(jī)吧。
網(wǎng)友評論:絕對不會. 我是說同一個(gè)程序既可以編譯到MCS51上,也可以不做修改的編譯到AVR和PIC上. 所以我這里設(shè)計(jì)的語法是和任何單片機(jī)無關(guān)的語法,然后編譯器力爭在每種單片機(jī)中都實(shí)現(xiàn)這些語法,這樣就可以實(shí)現(xiàn)我的目標(biāo)了.
網(wǎng)友評論:頂LZ
網(wǎng)友評論:LZ是出于興趣還是出于什么做這個(gè)編譯器呢?
坦率得說,如果是PIC,除非能嵌到MPLAB IDE,否則是沒幾個(gè)人會去用的。MLAB IDE的接口文檔,MCHP是不會隨便開放的。
HI-TECH的IDE,中國大陸區(qū)根本沒人用,悲劇啊,雖然C編譯器實(shí)際用戶很多。
在可以嵌入MPLAB IDE的前提下,C編譯器要懂得在DEBUG的時(shí)候規(guī)避掉ICD模塊占用的資源。麻煩事還是挺多的。
網(wǎng)友評論:看了這么多,感覺lz對單片機(jī)編程不很熟悉,編譯器要做到retargetable,是比較麻煩的,JAVA虛擬機(jī)的思路不適合嵌入式系統(tǒng)編譯器
網(wǎng)友評論:看了這么多,感覺lz對單片機(jī)編程不很熟悉,編譯器要做到retargetable,是比較麻煩的,JAVA虛擬機(jī)的思路不適合嵌入式系統(tǒng)編譯器
wwwq 發(fā)表于 2010-1-28 17:35
不是啊, 我不可能在單片機(jī)上搞個(gè)虛擬機(jī)出來. 我的意思相當(dāng)于讓51系列的KEIL 和AVR的IAR 以及凌陽的SUNPLUSE IDE等有一個(gè)完全相同的語法,因?yàn)槊總(gè)編譯器都有點(diǎn)自己的擴(kuò)展語法. 但這是不可能的,所以才嘗試著做這個(gè)編譯器, 我希望它能實(shí)現(xiàn)真正的高級語言,能屏蔽不同類型單片機(jī)之間的差異, 雖然目前沒能實(shí)現(xiàn). 但我正在努力的做.
MY QQ:910360201 不過經(jīng)常不上線, 呵呵
網(wǎng)友評論:定LZ,,, 以前不是還有個(gè)哥們做了個(gè)海爾的C編譯器么?后面怎么沒消息了
網(wǎng)友評論:支持頂一下!
網(wǎng)友評論:牛人!頂一下!
網(wǎng)友評論:
LZ牛人
我在一家IC公司做單片機(jī)編譯器,LZ的想法固然好,也是廣大單片機(jī)用戶所希望的,但難度不小啊
51、PIC、AVR等單片機(jī)指令集都不一樣,且硬件資源也不一樣,Windows下編程我們很少關(guān)心CPU的硬件資源,但單片機(jī)就不一樣了
網(wǎng)友評論:niejinbo
這位是明白人,lz的勇氣可嘉,但路線不清,不過能有做這個(gè)東西的勇氣也比不少高校教授要強(qiáng)得多了,我曾經(jīng)問過多個(gè)學(xué)校的
計(jì)算機(jī)專業(yè)的老師,一個(gè)最深刻的是說:我們專業(yè)的都不搞,你們是無知者無畏。不過我們搞出來了。這里路太長,lz還是別搞了,學(xué)生的精力有限。
網(wǎng)友評論:LZ有空可研究下LCC,LCC可以針對不同的目標(biāo)機(jī)器產(chǎn)生不同的代碼,當(dāng)然需要配置一下
網(wǎng)友評論:繼續(xù)關(guān)注中
網(wǎng)友評論:做個(gè)編譯器不容易,做得通用和用戶認(rèn)可的更難!
網(wǎng)友評論:頂起
網(wǎng)友評論:不是啊, 我不可能在單片機(jī)上搞個(gè)虛擬機(jī)出來. 我的意思相當(dāng)于讓51系列的KEIL 和AVR的IAR 以及凌陽的SUNPLUSE IDE等有一個(gè)完全相同的語法,因?yàn)槊總(gè)編譯器都有點(diǎn)自己的擴(kuò)展語法. 但這是不可能的,所以才嘗試著做這個(gè)編 ...
0xCC 發(fā)表于 2010-1-28 17:58
那你不是做了一個(gè)擴(kuò)展語法而已嗎,和其他的編譯器有何區(qū)別,比如IAR,不過是添加自己的擴(kuò)展語法而已。人家還支持標(biāo)準(zhǔn)C,你倒來了完全自己的語法,連標(biāo)準(zhǔn)C都不完全支持了,呵呵~~
網(wǎng)友評論:精神上支持;不過最好還是弄成與標(biāo)準(zhǔn)兼容的,方便移植;
樓主有這份精力,還不如把比較難的模塊;做成自動(dòng)生成代碼的;這個(gè)可以參考飛思卡爾的processor expert;我覺得做得不錯(cuò),但就是生成的注釋太多了。文件本來可以整合成一個(gè)的它就要分兩個(gè);造成文件太多,找起來不易。
如果樓主能把AVR PIC 51 等芯片也做成與飛思卡爾的一樣,相信比你這個(gè)仿keil的編譯器會成功得多。
網(wǎng)友評論:能寫編譯器,比較牛了
網(wǎng)友評論:支持樓主,加油!
網(wǎng)友評論:hao,非常的好。
http://www.minyantech.com
網(wǎng)友評論:不說好與壞,樓主鉆研的精神就值得小弟學(xué)習(xí)了~~
網(wǎng)友評論:我在linux下,沒裝rar解壓器,故對LZ的編程思路也不慎了解。
但是正統(tǒng)思路應(yīng)該是 bison Yacc 之類,不要再自己做輪子了。
如果我記得沒錯(cuò),IBM上還有篇教你用yacc做簡單編譯器的小文章。建議LZ看看。
估計(jì)LZ是自己寫代碼分析的,做這種事,應(yīng)該先查查資料
網(wǎng)友評論:又不了解又要教導(dǎo)別人。。
樂子大了
網(wǎng)友評論:頂一下樓主。我也做了一個(gè)編譯器,已經(jīng)用到一個(gè)產(chǎn)品中,有時(shí)間交流一下。呵呵。我已經(jīng)加你QQ了
網(wǎng)友評論:醬油打完了
網(wǎng)友評論:謝謝樓主!