• <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>
            隨筆-341  評論-2670  文章-0  trackbacks-0
             
                 摘要: 為了讓編譯成x86后的代碼可以轉(zhuǎn)換成C++的函數(shù)指針,我們也必須處理成員對齊的事情。如果腳本里的結(jié)構(gòu)成員對齊跟C++不一致的話,會造成很多麻煩。下面是成員對齊的計算方法:  閱讀全文
            posted @ 2009-03-09 20:46 陳梓瀚(vczh) 閱讀(3747) | 評論 (2)編輯 收藏
                 摘要: x87的FPU支持很多種浮點運(yùn)算,其中浮點運(yùn)算的比較結(jié)果不放在EFLAGS里,我們需要人手取出。在比較a和b的時候,C2=0,C3=(a==b),C0=(a<b)。我們可以將FNSTSW AX指令將浮點標(biāo)志位復(fù)制到AX,然后通過讀取C3、C2和C0(分別位于第14、10、8位)來判斷結(jié)果。下面是一個求浮點數(shù)組最大值的匯編函數(shù):  閱讀全文
            posted @ 2009-03-06 04:56 陳梓瀚(vczh) 閱讀(1495) | 評論 (0)編輯 收藏
                 摘要: 本來昨天搞定了異常處理之后決定狂喜一天,誰知道今天用release編譯了一下之后竟然掛了!資料找了半天發(fā)現(xiàn)是Windows XP之后提供的一項保護(hù)SAFESEH搞的鬼。于是需要將自己的異常處理函數(shù)添加進(jìn)PE頭的SAFESEH列表中。方法如下:  閱讀全文
            posted @ 2009-03-04 08:40 陳梓瀚(vczh) 閱讀(1897) | 評論 (2)編輯 收藏
                 摘要: 使用上一篇文章的資料,就可以使用匯編實現(xiàn)異常處理了。下面來看一個例子。  閱讀全文
            posted @ 2009-03-03 00:20 陳梓瀚(vczh) 閱讀(2275) | 評論 (1)編輯 收藏
            A Crash Course on theDepths of Win32 Structured Exception Handling, MSJ January 1997
            http://www.microsoft.com/msj/0197/Exception/Exception.aspx

            對于結(jié)構(gòu)化異常處理(SEH)的進(jìn)一步探索(讀后感)
            http://vicchina.51.net/research/other/seh/sehadvance.htm

            NT 中的異常幀結(jié)構(gòu)和異常嵌套(讀后感續(xù))
            http://vicchina.51.net/show_article.php?id=65
            posted @ 2009-03-02 04:45 陳梓瀚(vczh) 閱讀(1772) | 評論 (0)編輯 收藏
                 摘要: stdcall、cdecl和fastcall的參數(shù)都是從右到左入棧,并且返回值遵循以下規(guī)律:
            小于等于4字節(jié)結(jié)構(gòu)用EAX
            小于等于8字節(jié)結(jié)構(gòu)用EDX:EAX
            浮點數(shù)用ST(0)
            其他則在EAX放置一個指針,供返回值使用

            stdcall被調(diào)用者清棧,cdecl調(diào)用者清棧,fastcall被調(diào)用者清棧并且前兩個小于等于4字節(jié)的參數(shù)放入ECX和EDX。返回值和參數(shù)如果一方有構(gòu)造函數(shù)或析構(gòu)函數(shù)則不使用寄存器。
            于是今天用字符串形式的匯編寫了三種調(diào)用方法的求和函數(shù):  閱讀全文
            posted @ 2009-03-01 05:27 陳梓瀚(vczh) 閱讀(1802) | 評論 (9)編輯 收藏
                 摘要: 這個匯編程序讀入一個字符串,并計算結(jié)果。支持加減乘除括號,不支持浮點數(shù),不支持查錯。以下是匯編以及注釋。匯編程序使用這篇文章的程序編譯并執(zhí)行。  閱讀全文
            posted @ 2009-02-26 09:05 陳梓瀚(vczh) 閱讀(2214) | 評論 (0)編輯 收藏
                 摘要: 今天完成了文本格式匯編代碼的編譯工作。這主要是為了調(diào)試,因為編譯器不可能產(chǎn)生文本格式的匯編代碼,這樣會很浪費(fèi)資源。翻譯過程如下:  閱讀全文
            posted @ 2009-02-26 01:27 陳梓瀚(vczh) 閱讀(3374) | 評論 (2)編輯 收藏
                 摘要: 光能編譯匯編還是不行的,因為很多東西在編譯的時候不知道,典型的比如放常量那部分的指針等等。主要原因還是因為x87(指FPU部分)沒有指令包含浮點立即數(shù),所有裝載浮點常數(shù)的指令都要求提供指針。所以諸如double a=1.2;之類的代碼,需要將1.2預(yù)先放置在一個地方然后確定指針的位置。

            于是就遇到了一個問題,如何將編譯后才知道的指針地址寫進(jìn)去呢?  閱讀全文
            posted @ 2009-02-22 22:41 陳梓瀚(vczh) 閱讀(1931) | 評論 (1)編輯 收藏
                 摘要: 在完成了這里和這里的工作之后,就可以寫程序生成機(jī)器碼了。在生成機(jī)器碼的時候有如下注意事項:

            1:可執(zhí)行代碼所在的空間必須使用VirtualAlloc與PAGE_EXECUTE_READWRITE標(biāo)記分配。
            2:程序需要的常量空間、全局變量空間和指令空間需要分開在三個不同的地方。

            下面的例子使用一個struct保存指令的每一個部分,并且結(jié)合之前產(chǎn)生的指令譯碼表生成二進(jìn)制碼。  閱讀全文
            posted @ 2009-02-22 07:08 陳梓瀚(vczh) 閱讀(4949) | 評論 (11)編輯 收藏
            僅列出標(biāo)題
            共35頁: First 18 19 20 21 22 23 24 25 26 Last 
            亚洲AV无码1区2区久久| 亚洲&#228;v永久无码精品天堂久久| 亚洲国产精品狼友中文久久久 | 久久91这里精品国产2020| 国产成人综合久久久久久| 精品熟女少妇aⅴ免费久久| 亚洲国产精品无码久久一区二区| 97久久超碰国产精品2021| 色综合久久天天综线观看| 丰满少妇人妻久久久久久| 老司机午夜网站国内精品久久久久久久久 | 久久精品国产99国产电影网 | 亚洲va久久久噜噜噜久久| 九九99精品久久久久久| 97精品国产97久久久久久免费| 国产午夜免费高清久久影院| 亚洲精品国产综合久久一线| 久久精品视频免费| 性欧美丰满熟妇XXXX性久久久| 午夜肉伦伦影院久久精品免费看国产一区二区三区 | 亚洲伊人久久精品影院| 久久精品国产精品亚洲| 久久久精品免费国产四虎| 亚洲AV成人无码久久精品老人| 伊人色综合久久天天人守人婷| 日本免费一区二区久久人人澡| 久久久无码精品亚洲日韩蜜臀浪潮| 欧美色综合久久久久久| 国产激情久久久久影院老熟女| 国内精品伊人久久久久| 久久人妻少妇嫩草AV无码专区| 无码国内精品久久综合88| 国产精品久久久久久久app| 久久久久久极精品久久久| 品成人欧美大片久久国产欧美...| 欧美亚洲国产精品久久蜜芽| 国产一级持黄大片99久久| 久久综合久久综合久久| 久久亚洲高清观看| 久久婷婷色综合一区二区| 久久青青草原精品国产软件 |