.NET探秘

出版時間: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

評論、評分、閱讀與下載


    .NET探秘 PDF格式下載


用戶評論 (總計23條)

 
 

  •   學(xué)習(xí)C#,對CLR很少有人會理解,似乎市面上最近最多的,抬得很高的就是鄒靖老師翻譯的CLR via C#了,不過看看那本后,再看看這本,收獲不小啊!譯者居然也給力,和Windows編程的作者一樣,是個非技術(shù)出身,不過翻譯還行,肯定了,絕對的好書
  •   對于學(xué)習(xí)MSIL是一本不錯的書籍
  •   最近正在學(xué)習(xí)msil 正好
  •   國內(nèi)唯一全面介紹MSIL的書
  •   深入****底層必備!
  •   經(jīng)典,不說什么了。
  •   這本書的翻譯水平不怎么樣,句子挺難懂的,所以不要全相信書本說的。學(xué)習(xí)這本書最好以實踐為主,照他的方法研究,然后自己總結(jié),書本的總結(jié)因翻譯問題,總是莫名其妙,不知所云。這本書是現(xiàn)在唯一的MSIL指南,先湊合湊合吧。
  •   是一本了解****底層的書籍,不過書的內(nèi)容比較枯燥??赐暾緯枰艽蟮哪托摹?/li>
  •   學(xué)習(xí)一下,聽講挺有難度的
  •   書還好吧,就是看不明白,可能我還沒學(xué)到家吧!
  •   給同事買的,書很好,可是好多人看不懂
  •   書一般吧,沒有想象中好,基本都是在列IL的一些概念
  •   正在看第八章簽名:
      下面據(jù)三個明顯的錯誤地方
      141頁,IMAGE_CEE_UNMANAGED_CALLCONV_C (0x1). C/C++-style calling convention. The call stack
      is cleaned up by the caller. The ILAsm notation is unmanaged cdecl.
      • IMAGE_CEE_UNMANAGED_CALLCONV_STDCALL (0x2). Win32 API calling convention. The call
      stack is cleaned up by the callee. The ILAsm notation is unmanaged stdcall.
      • IMAGE_CEE_UNMANAGED_CALLCONV_THISCALL (0x3). C++ member method (non-vararg)
      calling convention. The callee cleans the stack, and the this pointer is passed through
      the ECX register. The ILAsm notation is unmanaged thiscall.
      
      這部分有兩處翻譯錯誤:1 caller,callee全被翻譯成“調(diào)用方”,顯然后面的應(yīng)該是"被調(diào)用方"
      2 ecx register翻譯成ecx注冊器,計算機術(shù)語里應(yīng)該叫寄存器更合適吧
      
      
      另外第三個錯誤是在這章的開頭 8.12數(shù)據(jù)指針類型
      
      原文次小節(jié)的第一段:The common language runtime distinguishes between pointers that must point at the beginning
      of an object allocated on the garbage-collected heap (called object references; see
      “Representing Classes”) and other pointers.
      
       譯文:在垃圾收集堆上分配的對象(稱為對象引用,參見8.2節(jié))的開始位置指針,clr會將其與其他指針相區(qū)別。
      
      本人自認(rèn)為語文學(xué)的不是很爛 ,實在是不理解位置括號中到底是指誰被成為對象應(yīng)用.
      我對原文的理解是。clr會區(qū)分指向托管堆中對象開始位置的指針(被叫做對象引用)和其他指針。這里應(yīng)該是說對象引用是一種指針
      他指向的是托管堆中的對象內(nèi)存開始位置。
      
      當(dāng)然書中其他地方頁發(fā)現(xiàn)不少之類的錯誤,只是沒時間記錄下來??偟膩碚f對此書翻譯很失望!
  •   講MSIL的書本來就少,這本書翻譯的很差??雌饋聿淮笏?。
  •   是博客園的包包譯的,哈哈,對這本書絕對有信心啊,做個記號,買定了!
  •   看了看這本書,翻譯得不錯,建議看這本書之前看看CLR相關(guān)的書……
  •   這本書的翻譯確實很爛,不敢恭維,建議有基礎(chǔ)的geek看原版的……
  •   精品中的精品,真正的精品。
  •   原版的書確實是經(jīng)典,不過讓國內(nèi)的人已翻譯有點變味,當(dāng)然包的技術(shù)應(yīng)該是不錯的,只是翻譯水平不敢恭維!
  •   看完了第一部分,初步感受到了IL的能力。作者的文筆也沒有想象的那么晦澀,他往往不會直接告訴讀者答案,而是試著引導(dǎo)我們自己去尋找。希望在把整本的知識都吃透以后,能夠真正觸到.NET的本質(zhì)。
  •   建議有一定基礎(chǔ)的看看,專修內(nèi)功
  •   紙張什么的不錯,大略看了幾章,翻譯比較生硬,很多地方是直譯.按照中文的習(xí)慣重新組織一下句子會更好點,否則看到一些英文習(xí)慣的中文比較頭疼,當(dāng)然英文原書本來就不輕松.很多術(shù)語都只有一點差別,但是意思差的很遠(yuǎn),讀的時候要小心才行
  •   才看了幾章,感覺翻譯不好。不知是譯者是水平太高,還是表述有問題,總之,有些問題沒有解釋清楚。這本書以前出版過,當(dāng)時是幾個人翻譯的,盡管個別術(shù)語翻譯不準(zhǔn),總體質(zhì)量很好,表述的也很清楚。今天,就寫到這里了,等看完再寫評論。
 

250萬本中文圖書簡介、評論、評分,PDF格式免費下載。 第一圖書網(wǎng) 手機版

京ICP備13047387號-7