青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆-341  評(píng)論-2670  文章-0  trackbacks-0
    因?yàn)樵陂_(kāi)發(fā)CMinus的過(guò)程中為了異常處理(最終沒(méi)有實(shí)現(xiàn)進(jìn)CMinus),曾經(jīng)學(xué)習(xí)了一下怎么用匯編語(yǔ)言寫(xiě)try-catch,因此這個(gè)CPU相關(guān)的處理方法就被我偷了哈,實(shí)現(xiàn)在了NativeX的虛擬機(jī)里。

    在NativeX里面,try-catch和throw非常簡(jiǎn)單。throw你可以加一個(gè)值當(dāng)異常數(shù)據(jù),也可以不加(不會(huì)修改上次的異常數(shù)據(jù),可以當(dāng)rethrow用)。catch的話沒(méi)辦法跟C++一樣根據(jù)類(lèi)型來(lái)判斷,因此我會(huì)給你一個(gè)異常數(shù)據(jù)的指針,你自己看著辦哈,因?yàn)镹ativeX跟C一樣沒(méi)有RTTI。因此throw就很簡(jiǎn)單了,就是恢復(fù)棧頂和棧底指針之后跳轉(zhuǎn)到最近的異常處理程序里面去。try和catch就是用來(lái)創(chuàng)建和銷(xiāo)毀異常處理程序的。所有的異常處理程序構(gòu)成了一個(gè)鏈表,這個(gè)鏈表被我記在了堆棧里面,而最近的異常處理節(jié)點(diǎn)的指針則被我放在了整個(gè)堆棧控件的最頂部,接在后面的是異常對(duì)象的數(shù)據(jù)。你每次throw的東西的尺寸可以不同,因此占用的“堆棧最頂部空間”也不同。當(dāng)然如果你函數(shù)遞歸太深而導(dǎo)致棧頂覆蓋了異常對(duì)象的數(shù)據(jù)區(qū)域時(shí),就會(huì)觸發(fā)“堆棧溢出”事件。在NativeX里面堆棧溢出代表你這程序已經(jīng)廢了,因此這個(gè)是不能catch的,虛擬機(jī)返回給宿主程序一個(gè)信號(hào)然后就停止執(zhí)行了。

    我們來(lái)看一個(gè)簡(jiǎn)單的例子,如何throw之后把異常對(duì)象的返回給函數(shù),首先是代碼:
 1 /*NativeX Code*/
 2 unit nativex_program_generated;
 3 function int32 main()
 4 {
 5     (result = 10s32);
 6     try
 7         Throw();
 8     catch
 9         (result = ( * cast<int32*>(exception)));
10 }
11 
12 function void Throw()
13     throw 20s32;

    main函數(shù)首先將函數(shù)返回值設(shè)置成10,然后調(diào)用throw函數(shù)。throw函數(shù)會(huì)把20給throw出來(lái),然后main函數(shù)catch了,把結(jié)果返回。NativeX使用了關(guān)鍵字exception來(lái)表達(dá)異常對(duì)象的地址。當(dāng)然你如果要throw各種不同的東西的話,你得自己做標(biāo)記(親自實(shí)現(xiàn)RTTI)了。好了,我們看看產(chǎn)生的指令:
 1 // unit nativex_program_generated;
 2      0: stack_reserve 0
 3      1: stack_reserve 0
 4      2: ret 0
 5 // function int32 main()
 6      3: stack_reserve 0
 7 // (result = 10s32);
 8      4: push s32 10
 9      5: resptr
10      6: write s32
11 // try
12      7: exception_handler_push 14
13 // Throw();
14      8: stack_reserve 1
15      9: stack_top 0
16     10: call 20 1
17     11: stack_reserve -1
18 // try
19     12: exception_handler_pop
20     13: jump 18 1
21     14: exception_handler_pop
22 // (result = ( * cast<int32*>(exception)));
23     15: exception_object_address
24     16: resptr
25     17: copymem 4
26 // function int32 main()
27     18: stack_reserve 0
28     19: ret 0
29 // function void Throw()
30     20: stack_reserve 0
31 // throw 20s32;
32     21: exception_object_reserve 4
33     22: push s32 20
34     23: exception_object_address
35     24: write s32
36     25: exception_raise
37 // function void Throw()
38     26: stack_reserve 0
39     27: ret 0

    try首先會(huì)將catch之后的第一個(gè)指令給exception_handler_push了,在try的結(jié)尾當(dāng)然要取消掉這個(gè)異常處理函數(shù)了,因此pop一下,然后jump到catch后面。當(dāng)然catch的第一件事也是exception_handler_pop。exception_object_reserve在棧頂預(yù)留指定的空間來(lái)存放異常對(duì)象,exception_object_address則是獲得異常對(duì)象的地址,exception_raise就是跳轉(zhuǎn)到最近的異常處理函數(shù)了。raise不會(huì)把異常處理函數(shù)的記錄給pop掉,所以要靠catch自己去pop。

    NativeX已經(jīng)完成了,接下來(lái)就可以開(kāi)始打造周邊工具了哇哈哈。將來(lái)的目標(biāo)是將類(lèi)似C#和Javascript的語(yǔ)言都編譯到NativeX上,然后為這三類(lèi)語(yǔ)言寫(xiě)很多語(yǔ)法分析器,然后他們就變成很多語(yǔ)言了。當(dāng)然這些語(yǔ)言只是demo。Vczh Library++的目的是提供實(shí)現(xiàn)編譯器的中間每一層的類(lèi)庫(kù),因此想干嘛就可以干嘛了哈。
posted on 2010-08-28 01:14 陳梓瀚(vczh) 閱讀(3539) 評(píng)論(9)  編輯 收藏 引用 所屬分類(lèi): VL++3.0開(kāi)發(fā)紀(jì)事

評(píng)論:
# re: Vczh Library++的NativeX語(yǔ)言最后一個(gè)特性完成——異常處理 2010-08-29 01:50 | Tanky Woo
朋友你好:
C/C++和算法論壇:C++奮斗樂(lè)園
歡迎你加入。
里面有C/C++交流,求助,源碼,
算法學(xué)習(xí),求助,
ACM刷題
等各種板塊,
相信大家在一起能學(xué)習(xí)快樂(lè)。

論壇地址:
[url=http://www.cppleyuan.com/index.php]http://www.cppleyuan.com/index.php[/url]

另外,論壇現(xiàn)在招收版主,有意愿的朋友可以看看:
[url=http://www.cppleyuan.com/forumdisplay.php?fid=44]http://www.cppleyuan.com/forumdisplay.php?fid=44[/url]

注:此留言絕不是廣告,只是看見(jiàn)博主也是C/C++和算法的愛(ài)好者,我們想邀請(qǐng)博主一起加入我們的論壇。

我也是一名C/C++和ACM愛(ài)好者,大家可以去我博客看看就知道了:
[url=http://www.wutianqi.com/]http://www.wutianqi.com/[/url]

打擾之處請(qǐng)見(jiàn)諒。
  回復(fù)  更多評(píng)論
  
# re: Vczh Library++的NativeX語(yǔ)言最后一個(gè)特性完成——異常處理 2010-08-30 04:36 | mm
哇,bb好厲害!  回復(fù)  更多評(píng)論
  
# 能不能出個(gè)NativeX語(yǔ)言的使用說(shuō)明或?qū)嵗? 2010-08-31 02:35 | luoxiangbi
一定支持,非常感謝,當(dāng)然還得強(qiáng)烈要求。。。。什么時(shí)候能出一個(gè)使用NativeX語(yǔ)言的教程或者實(shí)例啊,東西是個(gè)好東西,也不能就你自己獨(dú)自享用啊,得想辦法讓大家用起來(lái),呵呵,代碼注釋本來(lái)就少,文檔又不多,對(duì)于非科班出身的業(yè)余程序員,哎,慚愧,我都算不上業(yè)余程序員,就是自己瞎搗鼓,這個(gè)真的是有困難,呵呵。
  回復(fù)  更多評(píng)論
  
# re: Vczh Library++的NativeX語(yǔ)言最后一個(gè)特性完成——異常處理 2010-09-01 06:42 | 陳梓瀚(vczh)
@luoxiangbi
我會(huì)的,等到NativeX完成之后,現(xiàn)在還有可能發(fā)生變動(dòng),還不能寫(xiě)教程  回復(fù)  更多評(píng)論
  
# re: Vczh Library++的NativeX語(yǔ)言最后一個(gè)特性完成——異常處理 2010-09-14 01:31 | yted
冒昧留言,只是因?yàn)閯倓傇诰W(wǎng)上看了一篇文章,想知道您對(duì)文章里面的觀點(diǎn)(見(jiàn)文章第二段)有什么看法:

A Better Programming Language
http://mdmstudios.wordpress.com/2010/08/31/a-better-programming-language/  回復(fù)  更多評(píng)論
  
# re: Vczh Library++的NativeX語(yǔ)言最后一個(gè)特性完成——異常處理 2010-09-15 07:45 | 陳梓瀚(vczh)
@yted
所以我也只看了第二段不知道會(huì)不會(huì)斷章取義……我的看法是這樣的
1:對(duì)于自己的學(xué)習(xí)來(lái)說(shuō),最好是低級(jí)語(yǔ)言高級(jí)語(yǔ)言一起來(lái),做幾個(gè)困難的什么,當(dāng)然可以學(xué)到很多東西,
2:對(duì)于公司來(lái)說(shuō),我相信軟件慢一點(diǎn)點(diǎn)其實(shí)是無(wú)所謂的,能在短時(shí)間內(nèi)開(kāi)發(fā)出高質(zhì)量的軟件,才有可能應(yīng)對(duì)社會(huì)的需求變更哈,所以其實(shí)是有好處的。舉個(gè)例子,就如同C#和C++,我相信雖然C#并沒(méi)有比C++多出什么,但至少節(jié)省了你思考那里應(yīng)該delete的時(shí)間,你可以去寫(xiě)更多的東西……  回復(fù)  更多評(píng)論
  
# re: Vczh Library++的NativeX語(yǔ)言最后一個(gè)特性完成——異常處理 2010-09-15 07:46 | 陳梓瀚(vczh)
@yted
還有,根據(jù)實(shí)踐,OOP其實(shí)作用沒(méi)有我們想象中大。所以如果一門(mén)語(yǔ)言只讓你可以O(shè)OP而不能【方便】使用其他【范式】,是會(huì)讓歷史的車(chē)輪倒退的。  回復(fù)  更多評(píng)論
  
# re: Vczh Library++的NativeX語(yǔ)言最后一個(gè)特性完成——異常處理 2010-09-17 00:34 | yted
@陳梓翰

同意第一第二點(diǎn),軟件工程和編程語(yǔ)言的發(fā)展一直都在降低復(fù)雜度這個(gè)點(diǎn)上做文章,包括內(nèi)存管理機(jī)制,范式,閉包,異常,等等等等,等等等等.

對(duì)于 OOP, 其實(shí)它只是一種思考的方式, 但作用似乎不僅想象中的小, 因?yàn)楹芏嗉记啥际腔?OOP 之上的, 當(dāng)然我們也不妨說(shuō)其實(shí)很多技巧的作用沒(méi)有想象中大...

而范式的使用, 感覺(jué)某些語(yǔ)言不僅讓我們方便地使用, 還讓我們方便地【犯錯(cuò)】, 記得 Linus 對(duì) C++ 的評(píng)價(jià)嗎 :)   回復(fù)  更多評(píng)論
  
# re: Vczh Library++的NativeX語(yǔ)言最后一個(gè)特性完成——異常處理 2010-09-17 07:16 | 陳梓瀚(vczh)
@yted
程序員有義務(wù)通過(guò)學(xué)習(xí)而減少犯錯(cuò),Linus只是招不到合適的人而發(fā)囧而已,竟然被眾人捧為圣經(jīng),此乃奇恥大辱也。  回復(fù)  更多評(píng)論
  
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲天堂免费观看| 久久福利一区| 日韩一区二区精品| 亚洲影视在线| 亚洲在线黄色| 夜夜嗨av一区二区三区中文字幕 | 久久久午夜精品| 久久久久久久久久久久久女国产乱| 亚洲图片欧美一区| 亚洲欧美一区二区视频| 亚洲女女女同性video| 久久夜精品va视频免费观看| 欧美福利视频一区| 亚洲婷婷综合久久一本伊一区| 亚洲欧美视频一区二区三区| 久久狠狠一本精品综合网| 久久久久.com| 国产精品爱啪在线线免费观看| 国产精品美女久久久久av超清| 亚洲免费不卡| 国产伦精品一区二区三区免费迷| 精品动漫3d一区二区三区| 欧美激情一区二区三区| 久久综合999| 欧美亚洲第一页| 韩国av一区| 欧美一区二区三区免费大片| 亚洲国产精品悠悠久久琪琪 | 久久久久久网站| 91久久久久久| 久久精品人人| 国产伦精品一区二区三区照片91 | 久久综合中文色婷婷| 欧美日韩在线一区二区| 亚洲高清不卡av| 久久久久久久久久久久久久一区| 99精品免费| 欧美成人免费播放| 韩国成人福利片在线播放| 欧美一级欧美一级在线播放| 亚洲精品久久久一区二区三区| 欧美在线免费观看| 国产精品一区二区黑丝| 在线综合亚洲| 亚洲片国产一区一级在线观看| 国产精品视频在线观看| 一区二区高清在线观看| 欧美巨乳在线观看| 亚洲欧洲中文日韩久久av乱码| 久久一区亚洲| 久久漫画官网| 亚洲国产另类精品专区| 久久夜色精品国产噜噜av| 亚洲男女自偷自拍| 国产精品一区二区在线观看网站| 一区二区三区视频在线观看| 亚洲日本国产| 欧美日韩精品在线视频| 一本色道久久加勒比精品| 亚洲欧洲偷拍精品| 欧美激情综合| 亚洲视频1区2区| 亚洲香蕉在线观看| 国产精品亚洲综合色区韩国| 欧美亚洲视频在线观看| 先锋亚洲精品| 国产亚洲一区在线播放| 老司机精品导航| 牛人盗摄一区二区三区视频| 亚洲日韩视频| 欧美jizzhd精品欧美喷水 | 午夜在线精品偷拍| 国产精品视频专区| 久久久久99| 久久米奇亚洲| 欧美日韩综合视频网址| 亚洲在线网站| 欧美一区二区成人6969| 在线看片第一页欧美| 亚洲人成精品久久久久| 欧美午夜视频| 久久婷婷影院| 欧美精品色综合| 欧美亚洲在线观看| 欧美成人亚洲| 欧美亚洲视频在线观看| 毛片一区二区三区| 亚洲欧美国产精品桃花 | 欧美日韩免费在线视频| 亚洲欧美日韩另类精品一区二区三区| 中文欧美字幕免费| 在线观看成人av| 一区二区三区精品在线 | 欧美一激情一区二区三区| 久久激情网站| 亚洲一区在线视频| 久热精品视频在线| 亚洲欧美日韩久久精品| 免费在线欧美视频| 欧美一区二区私人影院日本| 久久久久久久一区二区三区| 亚洲午夜激情在线| 久久精品日产第一区二区| 一区二区三区四区五区精品| 欧美性猛交xxxx乱大交蜜桃| 欧美日韩喷水| 欧美不卡高清| 国产区精品视频| 亚洲精品一二三区| 亚洲黄色av| 欧美一区二区三区精品电影| 一区二区免费在线播放| 久久久青草青青国产亚洲免观| 亚洲午夜一区| 欧美99久久| 蜜桃av一区二区| 国产午夜精品理论片a级探花 | 一区二区三区精品国产| 亚洲激情视频在线观看| 欧美一区二区三区四区高清| 一本色道久久综合狠狠躁篇怎么玩| 久久不见久久见免费视频1| 亚洲一区综合| 欧美日韩一区二区在线观看视频 | 欧美色区777第一页| 在线日本成人| 久久福利资源站| 久久精品视频免费| 国产精品网红福利| av成人手机在线| 一区二区三区黄色| 亚洲美女91| 日韩一级黄色片| 欧美国产免费| 亚洲欧洲偷拍精品| 99国产精品视频免费观看| 免费欧美在线| 亚洲国产一区二区三区青草影视| 尤物在线精品| 久热精品在线视频| 欧美 日韩 国产一区二区在线视频 | 国产精品午夜在线观看| 999在线观看精品免费不卡网站| 日韩视频免费在线| 欧美日韩国产精品一区| 亚洲六月丁香色婷婷综合久久| 一区二区免费在线观看| 欧美日韩亚洲91| 亚洲一区二区三区影院| 久久天天狠狠| 亚洲韩国一区二区三区| 欧美黄色视屏| 在线一区视频| 欧美一区二区三区的| 国产一区视频观看| 久久综合狠狠综合久久综青草 | 亚洲在线一区二区| 欧美专区一区二区三区| 伊人蜜桃色噜噜激情综合| 麻豆精品视频在线| 亚洲精品麻豆| 亚洲国产一区在线| 欧美日本亚洲| 午夜视频精品| 欧美激情乱人伦| 亚洲一区综合| 在线观看日韩国产| 欧美日韩精品是欧美日韩精品| 亚洲综合精品四区| 欧美成人综合网站| 午夜精品www| 亚洲国产日本| 国产一区观看| 欧美日韩免费在线观看| 久久精品在这里| 一区二区欧美日韩视频| 久久―日本道色综合久久| 日韩午夜电影在线观看| 国产日韩一区二区三区在线| 欧美成人精品一区| 欧美一级午夜免费电影| 日韩一级大片在线| 噜噜噜噜噜久久久久久91| 亚洲一区二区三区777| 在线欧美小视频| 国产日韩欧美在线播放不卡| 欧美精品乱人伦久久久久久| 欧美激情网友自拍| 日韩一区二区免费看| 免费观看成人网| 亚洲影院色无极综合| 亚洲国产高清一区| 国产欧美一区二区精品秋霞影院| 欧美搞黄网站| 久久久精品tv| 久久av一区二区| 亚洲欧美视频| 亚洲一区日本| 在线亚洲电影| 亚洲国产精品久久久久|