中图网(原中国图书网):网上书店,尾货特色书店,30万种特价书低至2折!

歡迎光臨中圖網 請 | 注冊
> >>
.NET Core 底層入門

包郵 .NET Core 底層入門

出版社:北京航空航天大學出版社出版時間:2020-01-10
開本: 小全開(170*240) 頁數: 524
¥31.2(3.2折)?

預估到手價是按參與促銷活動、以最優惠的購買方案計算出的價格(不含優惠券部分),僅供參考,未必等同于實際到手價。

中 圖 價:¥62.4(6.3折)定價  ¥99.0 登錄后可看到會員價
加入購物車 收藏
開年大促, 全場包郵
?新疆、西藏除外
溫馨提示:5折以下圖書主要為出版社尾貨,大部分為全新(有塑封/無塑封),個別圖書品相8-9成新、切口
有劃線標記、光盤等附件不全詳細品相說明>>
本類五星書更多>

.NET Core 底層入門 版權信息

  • ISBN:9787512431959
  • 條形碼:9787512431959 ; 978-7-5124-3195-9
  • 裝幀:一般膠版紙
  • 冊數:暫無
  • 重量:暫無
  • 所屬分類:>>

.NET Core 底層入門 本書特色

作者提供大量源碼鏈接以及解釋數據結構和處理流程的圖標。

.NET Core 底層入門 內容簡介

本書講解了 .NET Core公共語言運行時的底層實現,從介紹MSIL和x86匯編語言開始,到講解異常、多線程、GC以及JIT編譯器的實現原理與實現細節。本書包含了大量圖表讓讀者可以更容易了解其中的內容,同時涉及到 .NET Core底層實現的部分還給出了對應的源代碼鏈接,讓讀者可以參考源代碼有更深入的理解。此外,本書還有相關提問用的倉庫和QQ 群便于讀者交流,詳見序言。 本書主要面向有一年以上 .NET (C#)開發經驗的開發者,其他程序語言的開發者也可以閱讀本書來比較 .NET Core與其他語言的運行時之間有哪些共同點和不同點,本書的知識可以為讀者在編寫高性能應用或底層應用時提供有力的支持。

.NET Core 底層入門 目錄

第1章公共語言運行時概述1

1.1.1.NET框架簡介1

1.1.2公共語言運行時中的各個組成部分3

1.1.3名稱規范5

第2章MSIL入門7

第1節逆向 .NET程序到IL7

2.1.1ildasm7

2.1.2使用ILSpy10

2.1.3dnSpy10

第2節基礎語法11

2.2.1IL語法格式11

2.2.2IL指令格式17

2.2.3評價堆棧18

2.2.4常用指令19

2.2.5常見的C#代碼與IL代碼的對比21

第3節流程控制26

2.3.1IL流程控制26

2.3.2常見的流程控制C#代碼與IL代碼對比28

第3章x86匯編入門37

第1節匯編與機器碼37

3.1.1理解匯編語言與機器碼37

3.1.2RISC與CISC42

3.1.3流水線42

第2節內存44

3.2.1位與字節44

3.2.2負數的表現46

3.2.3小端與大端47

3.2.4內存地址47

3.2.5虛擬內存48

3.2.6了解虛擬內存的實現50

第3節寄存器50

3.3.1通用寄存器50

3.3.2程序計數器52

3.3.3標志寄存器52

第4節基礎指令55

3.4.1匯編指令記法55

3.4.2匯編指令格式56

3.4.3匯編指令簡寫57

3.4.4基礎匯編指令58

3.4.5更多指令68

3.4.6機器碼的編碼方式68

第5節流程控制69

3.5.1流程控制實現69

3.5.2比較指令70

3.5.3跳轉指令73

3.5.4其他流程控制77

3.5.5分支預測79

第6節函數調用82

3.6.1棧結構82

3.6.2函數調用85

3.6.3enter與leave指令89

3.6.4調用規范89

第7節系統調用91

3.7.1系統調用簡介91

3.7.2在x86上發起系統調用(軟中斷)92

3.7.3在x86上發起系統調用(sysenter)93

3.7.4在x8664上發起系統調用(syscall)94

第8節內存屏障95

3.8.1亂序執行95

3.8.2內存屏障簡介96

3.8.3雙檢鎖97

第4章編譯與調試CoreCLR100

第1節在Windows上編譯CoreCLR100

4.1.1準備編譯環境100

4.1.2下載CoreCLR源代碼101

4.1.3編譯CoreCLR102

4.1.4使用編譯出來的CoreCLR103

4.1.5*新的編譯文檔103

第2節在Windows上調試CoreCLR104

4.2.1使用Visual Studio調試CoreCLR104

4.2.2使用WinDbg調試CoreCLR105

4.2.3在WinDbg中使用SOS擴展109

4.2.4更方便地調試托管方法對應的匯編代碼113

第3節在Linux上編譯CoreCLR113

第4節在Linux上調試CoreCLR116

4.4.1使用LLDB調試CoreCLR116

4.4.2在LLDB中使用SOS擴展119

第5章異常處理實現126

第1節異常處理簡介126

5.1.1通過返回值報告錯誤與通過異常報告錯誤的區別126

5.1.2.NET中的異常處理129

第2節用戶異常的觸發132

5.2.1用戶異常132

5.2.2通過throw關鍵詞拋出異常133

5.2.3調用 .NET運行時內部函數拋出異常135

5.2.4JIT編譯時自動插入拋出異常的代碼135

5.2.5CoreCLR中的相關代碼137

第3節硬件異常的觸發137

5.3.1硬件異常137

5.3.2訪問null對象的字段時拋出異常138

5.3.3調用null對象的方法時拋出異常142

5.3.4對整數進行零除時的處理144

5.3.5CoreCLR中的相關代碼146

第4節異常處理實現146

5.4.1異常處理的過程146

5.4.2捕捉異常并獲取拋出異常的位置147

5.4.3通過調用鏈跟蹤獲取拋出異常的函數與所有調用來源148

5.4.4獲取函數元數據中的異常處理表150

5.4.5枚舉異常處理表調用對應的finally塊與catch塊151

5.4.6重新拋出異常的處理151

5.4.7CoreCLR中的相關代碼153

第5節異常處理對性能的影響154

第6章多線程實現158

第1節原生線程158

6.1.1原生線程簡介158

6.1.2上下文切換159

6.1.3線程調度161

6.1.4棧空間161

第2節托管線程162

6.2.1托管線程簡介162

6.2.2托管線程對象163

6.2.3創建托管線程的例子163

6.2.4前臺線程與后臺線程164

6.2.5CoreCLR中的相關代碼166

第3節搶占模式與合作模式166

6.3.1切換模式的實現167

6.3.2CoreCLR中的相關代碼169

第4節線程本地儲存169

6.4.1ThreadStatic Attribute屬性的實現171

6.4.2ThreadLocal類的實現172

6.4.3CoreCLR中的相關代碼175

第5節原子操作175

6.5.1原子操作簡介175

6.5.2.NET中的原子操作179

6.5.3無鎖算法182

6.5.4CoreCLR中的相關代碼183

第6節自旋鎖184

6.6.1線程鎖184

6.6.2使用Thread.SpinWait實現自旋鎖185

6.6.3使用System.Threading.SpinWait代替187

6.6.4使用System.Threading.SpinLock實現自旋鎖188

6.6.5Thread.Sleep(0)與Thread.Yield的區別189

6.6.6使用pause指令的另一個原因190

6.6.7CoreCLR中的相關代碼190

第7節互斥鎖191

第8節混合鎖與lock語句197

6.8.1線程中止安全200

6.8.2CoreCLR中的相關代碼201

第9節信號量204

6.9.1輕量信號量206

6.9.2通過信號量實現生產者—消費者模式206

6.9.3通過Monitor類實現生產者—消費者模式208

6.9.4CoreCLR中的相關代碼210

第10節讀寫鎖213

第11節異步操作216

6.11.1阻塞操作216

6.11.2事件循環機制217

6.11.3異步編程模型219

6.11.4異步編程模型的實現原理221

6.11.5任務并行庫224

6.11.6任務并行庫的實現原理226

6.11.7ValueTask229

6.11.8async與await關鍵字的例子230

6.11.9async與await關鍵字的實現原理231

6.11.10堆積的協程與無堆的協程239

6.11.11CoreCLR中的相關代碼239

第12節執行上下文242

6.12.1異步本地變量與執行上下文242

6.12.2CoreCLR中的相關代碼247

第13節同步上下文248

6.13.1同步上下文的使用例子(基于WinForm)249

6.13.2自定義同步上下文實現252

6.13.3CoreCLR中的相關代碼258

第7章GC垃圾回收實現260

第1節GC簡介260

7.1.1棧空間與堆空間260

7.1.2值類型與引用類型261

7.1.3.NET中的GC263

7.1.4垃圾回收VS引用計數271

第2節對象內存結構271

7.2.1值類型對象的內存結構271

7.2.2引用類型對象的內存結構273

7.2.3存活標記與固定標記276

7.2.4裝箱與拆箱277

7.2.5CoreCLR中的相關代碼278

第3節托管堆結構280

7.3.1.NET程序的內存結構280

7.3.2托管堆與堆段282

7.3.3分配上下文284

7.3.4分代的實現286

7.3.5自由對象列表287

7.3.6跨代引用記錄289

7.3.7析構對象列表與析構隊列291

7.3.8CoreCLR中的相關代碼291

第4節分配對象流程293

7.4.1new關鍵字生成的代碼293

7.4.2從托管堆分配空間的內部函數297

7.4.3分配小對象的流程299

7.4.4分配大對象的流程299

7.4.5記錄包含析構函數的對象到析構對象列表302

7.4.6CoreCLR中的相關代碼302

第5節垃圾回收流程303

7.5.1GC的觸發303

7.5.2執行GC的線程306

7.5.3GC的總體流程307

7.5.4重新決定目標代309

7.5.5判斷是否應該執行后臺GC311

7.5.6CoreCLR中的相關代碼312

第6節標記階段314

7.6.1獲取根對象314

7.6.2遞歸掃描根對象并設置存活標記315

7.6.3通過卡片表掃描跨代引用并設置存活標記318

7.6.4枚舉強引用GC句柄并設置存活標記318

7.6.5枚舉固定GC句柄并設置固定標記319

7.6.6枚舉弱引用GC句柄并清空不再存活對象引用319

7.6.7掃描析構對象列表并添加不再存活對象到析構隊列319

7.6.8枚舉跟蹤復活弱引用GC句柄并清空不再存活對象引用320

7.6.9決定是否啟用升代320

7.6.10CoreCLR中的相關代碼321

第7節計劃階段323

7.7.1構建Plug樹323

7.7.2構建Brick表324

7.7.3模擬壓縮325

7.7.4判斷是否執行壓縮與新建短暫堆段327

7.7.5CoreCLR中的相關代碼328

第8節重定位階段328

7.8.1修改對象引用地址328

7.8.2CoreCLR中的相關代碼330

第9節壓縮階段330

7.9.1復制對象值330

7.9.2結束GC332

7.9.3CoreCLR中的相關代碼333

第10節清掃階段333

7.10.1創建自由對象并加到自由列表333

7.10.2結束GC334

7.10.3CoreCLR中的相關代碼334

第11節后臺GC335

7.11.1后臺標記階段335

7.11.2后臺清掃階段336

7.11.3CoreCLR中的相關代碼337

第12節調整GC行為338

7.12.1設置GC模式338

7.12.2設置延遲模式339

7.12.3設置延遲等級340

7.12.4開啟無GC區域341

7.12.5開啟大對象堆壓縮342

7.12.6保留堆段空間地址342

7.12.7更多選項(針對 .NET Core)343

第13節獲取GC信息344

7.13.1獲取GC執行次數344

7.13.2注冊完整GC觸發前的通知345

7.13.3在Windows系統上使用ETW捕捉GC事件347

7.13.4在Linux系統上使用Lttng捕捉GC事件350

7.13.5使用EventListener捕捉GC事件351

第8章JIT編譯器實現354

第1節JIT簡介354

8.1.1JIT編譯器354

8.1.2.NET中的RyuJIT編譯器356

8.1.3在Visual Studio中查看生成的匯編代碼356

8.1.4使用JITDump日志查看JIT編譯流程與生成的匯編代碼357

第2節JIT編譯流程358

8.2.1JIT的觸發358

8.2.2分層編譯360

8.2.3JIT編譯流程362

8.2.4CoreCLR中的相關代碼363

第3節IR結構366

8.3.1HIR與LIR366

8.3.2HIR的結構367

8.3.3HIR的例子367

8.3.4LIR的結構372

8.3.5LIR的例子372

8.3.6常見的HIR結構376

8.3.7CoreCLR中的相關代碼382

第4節IL解析383

8.4.1創建本地變量表383

8.4.2創建基礎塊列表383

8.4.3創建異常處理表384

8.4.4構造語法樹385

8.4.5CoreCLR中的相關代碼386

第5節函數內聯387

8.5.1內聯的條件388

8.5.2內聯的處理389

8.5.3CoreCLR中的相關代碼390

第6節IR變形390

8.6.1添加內部代碼390

8.6.2提升構造體391

8.6.3標記暴露地址的本地變量393

8.6.4對基礎塊中的各個節點進行變形操作393

8.6.5消除三元條件運算節點396

8.6.6CoreCLR中的相關代碼398

第7節流程分析399

8.7.1計算前任基礎塊與后任基礎塊399

8.7.2計算邊緣權重(Edge Weight)400

8.7.3調整基礎塊順序400

8.7.4計算可到達的基礎塊400

8.7.5計算支配與支配邊界401

8.7.6插入GC檢測點402

8.7.7添加小函數402

8.7.8CoreCLR中的相關代碼403

第8節本地變量排序404

8.8.1根據引用計數排序本地變量404

8.8.2CoreCLR中的相關代碼404

第9節評價順序定義405

8.9.1決定語法樹節點的評價順序405

8.9.2CoreCLR中的相關代碼405

第10節變量版本標記406

8.10.1SSA406

8.10.2構建SSA407

8.10.3構建VN410

8.10.4CSSA與TSSA411

8.10.5CoreCLR中的相關代碼411

第11節循環優化413

8.11.1循環的結構413

8.11.2循環反轉415

8.11.3循環克隆416

8.11.4循環展開417

8.11.5循環不變代碼外提418

8.11.6CoreCLR中的相關代碼419

第12節賦值傳播420

8.12.1替換擁有相同值的變量420

8.12.2CoreCLR中的相關代碼421

第13節公共子表達式消除421

8.13.1合并擁有相同值的表達式421

8.13.2CoreCLR中的相關代碼422

第14節斷言傳播424

8.14.1生成并傳播斷言424

8.14.2CoreCLR中的相關代碼425

第15節邊界檢查消除426

8.15.1根據斷言消除邊界檢查426

8.15.2CoreCLR中的相關代碼427

第16節合理化427

8.16.1轉換HIR結構到LIR結構427

8.16.2轉換LCL_VAR節點428

8.16.3轉換ADDR與IND節點428

8.16.4刪除COMMA節點430

8.16.5CoreCLR中的相關代碼430

第17節低級化431

8.17.1分割針對long類型的操作431

8.17.2轉換算術運算到地址模式431

8.17.3轉換除法運算和求余運算431

8.17.4轉換SWITCH節點433

8.17.5針對函數調用添加PUTARG_REG與PUTARG_STK節點435

8.17.6轉換CALL節點436

8.17.7標記節點是否為被包含節點440

8.17.8標記節點被使用時是否需要先加載到CPU寄存器440

8.17.9CoreCLR中的相關代碼441

第18節線性掃描寄存器分配442

8.18.1寄存器分配442

8.18.2線性掃描寄存器分配簡介442

8.18.3CoreCLR中的相關代碼450

第19節匯編指令生成451

8.19.1計算幀布局451

8.19.2生成匯編指令453

8.19.3包含異常處理小函數的匯編代碼456

8.19.4CoreCLR中的相關代碼459

第20節機器代碼生成460

8.20.1生成機器碼與元數據460

8.20.2CoreCLR中的相關代碼463

第21節函數頭信息464

8.21.1除錯信息的結構465

8.21.2異常處理表的結構466

8.21.3GC信息的結構466

8.21.4函數對象的結構467

8.21.5棧回滾信息的結構467

第22節AOT編譯468

8.22.1使用.NET Framework的NGen工具執行AOT編譯469

8.22.2使用.NET Core的CrossGen工具執行AOT編譯469

附錄A中英文專業名詞對照表472

附錄B常用IL指令一覽480

附錄C常用匯編指令一覽485

附錄DSOS擴展命令一覽489

附錄EIR語法樹節點類型一覽517

參考文獻523


展開全部

.NET Core 底層入門 作者簡介

老農,開源MVC框架ZKWeb的作者,對C++和x86匯編有多年研究,熟悉逆向分析和性能優化。 劉浩楊,高級軟件工程師,關注應用性能管理(APM)和高級語言虛擬機實現,熟悉Web應用性能優化,對MSIL和CLR有深入了解。開源愛好者,開源AOP框架AspectCore作者,Apache SkyWalking APM的.NET Core探針作者。

商品評論(0條)
暫無評論……
書友推薦
編輯推薦
返回頂部
中圖網
在線客服
主站蜘蛛池模板: 污水提升器,污水提升泵,地下室排水,增压泵,雨水泵,智能供排水控制器-上海智流泵业有限公司 | 山东PE给水管厂家,山东双壁波纹管,山东钢带增强波纹管,山东PE穿线管,山东PE农田灌溉管,山东MPP电力保护套管-山东德诺塑业有限公司 | 软瓷_柔性面砖_软瓷砖_柔性石材_MCM软瓷厂家_湖北博悦佳软瓷 | 彼得逊采泥器-定深式采泥器-电动土壤采样器-土壤样品风干机-常州索奥仪器制造有限公司 | 企业彩铃制作_移动、联通、电信集团彩铃上传开通_彩铃定制_商务彩铃管理平台-集团彩铃网 | 电动葫芦|防爆钢丝绳电动葫芦|手拉葫芦-保定大力起重葫芦有限公司 | 箱式破碎机_移动方箱式破碎机/价格/厂家_【华盛铭重工】 | 艺术涂料_进口艺术涂料_艺术涂料加盟_艺术涂料十大品牌 -英国蒙太奇艺术涂料 | 翰香原枣子坊加盟费多少钱-正宗枣核糕配方培训利润高飘香 | 水厂自动化-水厂控制系统-泵站自动化|控制系统-闸门自动化控制-济南华通中控科技有限公司 | 集装箱展厅-住人集装箱住宿|建筑|房屋|集装箱售楼处-山东锐嘉科技工程有限公司 | 水厂自动化|污水处理中控系统|水利信息化|智慧水务|智慧农业-山东德艾自动化科技有限公司 | 潜水搅拌机-双曲面搅拌机-潜水推进器|奥伯尔环保 | 考试试题_试卷及答案_诗词单词成语 - 优易学 | 荣事达手推洗地机_洗地机厂家_驾驶式扫地机_工业清洁设备 | 篷房[仓储-婚庆-展览-活动]生产厂家-江苏正德装配式帐篷有限公司 | 质构仪_鱼糜弹性仪-上海腾拔仪器科技有限公司 | 电脑知识|软件|系统|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网 | 环氧乙烷灭菌器_压力蒸汽灭菌器_低温等离子过氧化氢灭菌器 _低温蒸汽甲醛灭菌器_清洗工作站_医用干燥柜_灭菌耗材-环氧乙烷灭菌器_脉动真空压力蒸汽灭菌器_低温等离子灭菌设备_河南省三强医疗器械有限责任公司 | 激光内雕_led玻璃_发光玻璃_内雕玻璃_导光玻璃-石家庄明晨三维科技有限公司 激光内雕-内雕玻璃-发光玻璃 | 炭黑吸油计_测试仪,单颗粒子硬度仪_ASTM标准炭黑自销-上海贺纳斯仪器仪表有限公司(HITEC中国办事处) | 耐磨陶瓷,耐磨陶瓷管道_厂家-淄博拓创陶瓷科技| 青岛美佳乐清洁工程有限公司|青岛油烟管道清洗|酒店|企事业单位|学校工厂厨房|青岛油烟管道清洗 插针变压器-家用电器变压器-工业空调变压器-CD型电抗器-余姚市中驰电器有限公司 | 中图网(原中国图书网):网上书店,尾货特色书店,30万种特价书低至2折! | 防火阀、排烟防火阀、电动防火阀产品生产销售商-德州凯亿空调设备有限公司 | 最新电影-好看的电视剧大全-朝夕电影网 | 滤芯,过滤器,滤油机,贺德克滤芯,精密滤芯_新乡市宇清流体净化技术有限公司 | RV减速机-蜗轮蜗杆减速机-洗车机减速机-减速机厂家-艾思捷 | 雪花制冰机(实验室雪花制冰机)百科 | 土壤养分检测仪|土壤水分|土壤紧实度测定仪|土壤墒情监测系统-土壤仪器网 | 手表腕表维修保养鉴定售后服务中心网点 - 名表维修保养 | PE一体化污水处理设备_地埋式生活污水净化槽定制厂家-岩康塑业 | 挤出机_橡胶挤出机_塑料挤出机_胶片冷却机-河北伟源橡塑设备有限公司 | 临时厕所租赁_玻璃钢厕所租赁_蹲式|坐式厕所出租-北京慧海通 | 玉米深加工设备|玉米加工机械|玉米加工设备|玉米深加工机械-河南成立粮油机械有限公司 | 台式核磁共振仪,玻璃软化点测定仪,旋转高温粘度计,测温锥和测温块-上海麟文仪器 | 仿古瓦,仿古金属瓦,铝瓦,铜瓦,铝合金瓦-西安东申景观艺术工程有限公司 | 同学聚会纪念册制作_毕业相册制作-成都顺时针宣传画册设计公司 | 冷藏车-东风吸污车-纯电动环卫车-污水净化车-应急特勤保障车-程力专汽厂家-程力专用汽车股份有限公司销售二十一分公司 | 东莞螺杆空压机_永磁变频空压机_节能空压机_空压机工厂批发_深圳螺杆空压机_广州螺杆空压机_东莞空压机_空压机批发_东莞空压机工厂批发_东莞市文颖设备科技有限公司 | elisa试剂盒价格-酶联免疫试剂盒-猪elisa试剂盒-上海恒远生物科技有限公司 |