出版時間:2009-9 出版社:人民郵電出版社 作者:利丁 頁數(shù):421 譯者:包建強
Tag標(biāo)簽:無
前言
不要驚訝,坐在你面前娓娓而談的,并不是一個技術(shù)Geek,而是流連于淮海路迤邐風(fēng)光的性情中人。編程只是我諸多業(yè)余愛好中的一項。當(dāng)然,有時會稍微熱情些,比如說,從狄更斯的《雙城記》中能聯(lián)想到設(shè)計模式的精華。 一直在醞釀一篇有些不同的序言,即開頭沒有諸多名人的溢美之詞,結(jié)尾也沒有感謝父母家人的肺腑之言,我只想談一談閱讀本書時所要注意的問題,以及本書的不足之處。作者Serge Lidin是位慈眉善目的老伯,我們曾坐在微軟總部的長椅上攀談良久。他曾經(jīng)是微軟IL小組的成員,所寫的內(nèi)容都是第一手資料,所以寫起本書來當(dāng)仁不讓,章節(jié)劃分相當(dāng)合理。但是,正如作者所說,他不善筆墨,所以本書讀起來非??菰?。當(dāng)然,CLR底層本身就是非??菰锏?,要把它寫得精彩生動,很難做到。除非借助C#來講解IL和元數(shù)據(jù),才會吸引人,如某位印度作家編著的C#to IL。建議大家先去閱讀后面這本書,它只是基于.NET 1.1的,沒有涉及泛型,內(nèi)容沒有前者豐富,但是,它要簡單得多。言歸正傳。本書是學(xué)習(xí)和研究IL和元數(shù)據(jù)的首選圖書,它可以作為一本技術(shù)參考手冊,睡覺前翻翻也是不錯的。本書并沒有介紹任何IL性能調(diào)優(yōu)的方法,而這正是開發(fā)人員所關(guān)心的,這不能不說是一個遺憾。IL和元數(shù)據(jù),也就是PE結(jié)構(gòu)體,是靜態(tài)的內(nèi)容。對于運行期間的動態(tài)執(zhí)行過程,完全不是這么回事。本書沒有涉及后面這部分內(nèi)容,畢竟,這超出了本書的范圍。有興趣的讀者可以去研究Rotor,可以參考SharedSource CLI Essentials一書。作者非常認(rèn)真負(fù)責(zé)。我們書信往來半年之久,修正了原書中的一些錯誤。同時,統(tǒng)一了.NET和匯編語言中的中文術(shù)語,其中,參考了侯捷先生和李建忠先生譯作中的諸多神來之筆。此外,還在字里行間添加了大量的譯注,有助于讀者理解。
內(nèi)容概要
本書是IL匯編語言的權(quán)威之作,深入地講解了IL的全部內(nèi)容,是.NET底層開發(fā)人員必備的參考書,對于從概念設(shè)計到實現(xiàn)和維護(hù)等軟件開發(fā)所有階段都很有價值。本書內(nèi)容基于.NET 2.0版本,同時,考慮到.NET 3.0/3.5在CLR/IL上沒有作任何改動,且即將推出的 .NET 4.0也只是在CLR上稍作修改而并沒有涉及IL語言,所以,本書對于目前各個版本的.NET Framework而言都是適用的?! ”緯m合所有.NET開發(fā)人員、講師、研究人員閱讀。
作者簡介
作者:(加拿大)利丁(Serge Lidin) 譯者:包建強Serge Lidin,曾是.NET CLR小組核心開發(fā)人員之一,是MSlL語言的設(shè)計者以及該語言規(guī)范的作者之一,負(fù)責(zé)設(shè)計并開發(fā)了IL匯編器、IL反匯編器等核心組件。目前任職于微軟Phoenix小組。開發(fā)新一代編譯技術(shù)底層框架。包建強,復(fù)旦人。微軟2008年MVP?,F(xiàn)就職于HP某航空項目,從事Sllverlight開發(fā)和Prism框架設(shè)計工作。技術(shù)博客:http://jax.cnblogs.corn/。
書籍目錄
第一部分 快速入門 第1章 簡單示例 1.1 CLR基礎(chǔ) 1.2 簡單示例:The Code 1.2.1 程序頭 1.2.2 類聲明 1.2.3 字段聲明 1.2.4 方法聲明 1.2.5 全局項 1.2.6 映射字段 1.2.7 數(shù)據(jù)聲明 1.2.8 作為占位符的值類型 1.2.9 調(diào)用非托管代碼 1.3 類的預(yù)先聲明 1.4 小結(jié) 第2章 代碼增強 2.1 精簡代碼 2.2 保護(hù)代碼 2.3 小結(jié) 第3章 使代碼更簡單 3.1 別名 3.2 編譯控制偽指令 3.3 關(guān)聯(lián)當(dāng)前類及其引用項 3.4 小結(jié) 第二部分 底層結(jié)構(gòu) 第4章 托管可執(zhí)行文件的結(jié)構(gòu) 4.1 PE/COFF頭 4.1.1 MS-DOS頭/Stub和PE簽名 4.1.2 COFF頭 4.1.3 PE頭 4.1.4 節(jié)頭 4.2 CLR頭 4.2.1 頭結(jié)構(gòu) 4.2.2 Flags字段 4.2.3 EntryPointToken字段 4.2.4 VTableFixups字段 4.2.5 StrongNameSignature字段 4.2.6 重定位節(jié) 4.2.7 文本節(jié) 4.2.8 數(shù)據(jù)節(jié) 4.2.9 數(shù)據(jù)常量 4.2.10 V表 4.2.11 非托管導(dǎo)出表 4.2.12 線程局部存儲(TLS) 4.2.13 資源 4.2.14 非托管資源 4.2.15 托管資源 4.3 小結(jié) 4.3.1 第一階段:初始化 4.3.2 第二階段:源代碼解析 4.3.3 第三階段:映像生成 4.3.4 第四階段:完成 第5章 元數(shù)據(jù)表的組織 5.1 什么是元數(shù)據(jù) 5.2 堆和表 5.2.1 堆 5.2.2 通用元數(shù)據(jù)頭 5.2.3 元數(shù)據(jù)表流 5.3 RID和標(biāo)記 5.3.1 RID 5.3.2 標(biāo)記 5.3.3 編碼標(biāo)記 5.4 元數(shù)據(jù)有效性檢查 5.5 小結(jié) 第三部分 基本組件 第6章 模塊和程序集 6.1 什么是程序集 6.2 私有程序集和共享程序集 6.3 作為邏輯執(zhí)行單元的應(yīng)用程序域 6.4 清單 6.5 Assembly元數(shù)據(jù)表和聲明 6.6 AssemblyRef元數(shù)據(jù)表和聲明 6.7 加載程序搜索程序集 6.8 Module元數(shù)據(jù)表和聲明 6.9 ModuleRef元數(shù)據(jù)表和聲明 6.10 File元數(shù)據(jù)表和聲明 6.11 托管資源元數(shù)據(jù)表和聲明 6.12 ExportedType元數(shù)據(jù)表和聲明 6.13 ILAsm中清單聲明的次序 6.14 單模塊程序集和多模塊程序集 6.15 元數(shù)據(jù)有效性規(guī)則概要 6.15.1 Assembly表有效性規(guī)則 6.15.2 AssemblyRef表有效性規(guī)則 6.15.3 Module表有效性規(guī)則 6.15.4 ModuleRef表有效性規(guī)則 6.15.5 File表有效性規(guī)則 6.15.6 ManifestResource表有效性規(guī)則 6.15.7 ExportedType表有效性規(guī)則 第7章 命名空間和類 7.1 類的元數(shù)據(jù) 7.1.1 TypeDef元數(shù)據(jù)表 7.1.2 TypeRef元數(shù)據(jù)表 7.1.3 InterfaceImpt元數(shù)據(jù)表 7.1.4 NestedClass元數(shù)據(jù)表 7.1.5 ClassLayout元數(shù)據(jù)表 7.2 命名空間和類的完整名稱 7.2.1 ILAsm命名約定 7.2.2 命名空間 7.2.3 類的完整名稱 7.3 類的特性 7.3.1 標(biāo)志 7.3.2 類的可見性和友元程序集 7.3.3 類的引用 7.3.4 父類型 7.3.5 接口實現(xiàn) 7.3.6 類的布局信息 7.4 接口 7.5 值類型 7.5.1 值的裝箱和拆箱 7.5.2 值類型的實例成員 7.5.3 值類型的派生 7.6 枚舉 7.7 委托 7.8 嵌套類型 7.9 類的擴充 7.10 元數(shù)據(jù)有效性規(guī)則概要 7.10.1 TypeDef表有效性規(guī)則 7.10.2 特定于枚舉的有效性規(guī)則 7.10.3 TypeRef表有效性規(guī)則 7.10.4 InterfaceImpt表有效性規(guī)則 7.10.5 NestedClass表有效性規(guī)則 7.10.6 ClassLayout表有效性規(guī)則 第8章 基本類型和簽名 8.1 CLR中的基本類型 8.1.1 基本數(shù)據(jù)類型 8.1.2 數(shù)據(jù)指針類型 8.1.3 函數(shù)指針類型 8.1.4 向量和數(shù)組 8.1.5 修飾符 8.1.6 本地類型 8.1.7 可變類型 8.2 簽名中類的表示 8.3 簽名 8.3.1 調(diào)用約定 8.3.2 字段簽名 8.3.3 方法和屬性簽名 8.3.4 MemberRef簽名 8.3.5 間接調(diào)用簽名 8.3.6 局部變量簽名 8.3.7 類型說明 8.4 簽名有效性規(guī)則概要 第9章 字段和數(shù)據(jù)常量 第10章 方法 第11章 泛型類型 第12章 泛型方法 第四部分 深入執(zhí)行引擎 第13章 IL指令 第14章 托管異常處理 第五部分 特殊組件 第15章 事件和屬性 第16章 自定義特性 第17章 安全特性 第18章 托管代碼和非托管代碼的互操作 第19章 多語言工程 第六部分 附錄 附錄A ILAsm語法 附錄B 元數(shù)據(jù)表 附錄C IL指令集 附錄D IL匯編器和IL反匯編器的命令行選項 附錄E 離線驗證工具 部分術(shù)語翻譯說明
章節(jié)摘錄
插圖:第1章簡單示例本章概要介紹幾Asm——MsIL匯編語言。(Ms幾表示微軟中間語言,本章稍后將會討論。)本章先討論一個相對簡單的ILAsm程序,隨后提出了一些修改意見,展示了如何用ILAsm表示.NET程序設(shè)計中的概念和元素。本章并沒有講如何用ILAsm編寫程序,但是會幫助用戶理解IL匯編器(ILASM)和IL反匯編器(ILDASM)做了什么,以及如何通過這些理解并借助這些工具來分析.NET程序的內(nèi)部結(jié)構(gòu)。你還將了解到一些發(fā)生在CLR中的神秘而有趣的事件——相當(dāng)吸引人,希望這能促使你讀完本書的其他部分。注解簡單起見,在本書中將IL匯編語言簡寫ILAsm。不要將其與ILAsM相混淆,后者是IL匯編器(也就是ILAsm匯編器)在.NET文檔中的簡寫形式。1.1CLR基礎(chǔ).NETcLR不僅是.NET諸多概念中的一個,更是.NET的核心。(注意,有時候我會將CLR稱為運行庫。)我們將重點關(guān)注.NETd?真正發(fā)生行為的部分——CLR,而不是.NET平臺的完全描述。
媒體關(guān)注與評論
想真正理解.NET框架的內(nèi)部機理嗎?閱讀本書吧?!薄 狦unnar Peipman。微軟MVP“憑借本書和微軟的規(guī)范、文檔,我們編寫IL代碼生成器是如此美妙過癮!” ——Robert Salita,資深編譯器工程師
編輯推薦
《.NET探秘MSIL權(quán)威指南》由微軟資深工程師、MSIL語言設(shè)計者之一撰寫,詳盡而深入地討論了.NET CLR的內(nèi)部結(jié)構(gòu)和運作。首次闡述了MSIL語言的方方面面,是極為寶貴的.NET技術(shù)資料。通過研讀《.NET探秘MSIL權(quán)威指南》,你將大大加深自己對.NET框架的理解,從而開發(fā)出更加緊湊、更高性能的.NET代碼。.NET框架已經(jīng)是微軟技術(shù)的核心平臺,但是,對于許多開發(fā)人員而言,它仍然是黑盒子。遇到各種實際的性能、調(diào)試等問題時很容易讓人陷入不知所措的境地。深入洞悉.NET技術(shù)內(nèi)幕,MSIL唯—權(quán)威指南,Amazon五星巨著,學(xué)習(xí)和參考皆宜。
圖書封面
圖書標(biāo)簽Tags
無
評論、評分、閱讀與下載