原创 .Net 7 內存模型函數描述結構MethoDesc

楔子 講一些CLR裏面的內存模型。本篇MethodDesc,意爲函數的描述之意,看下一個函數在CLR裏面是如何被描述的。 MethodDesc結構 這個結構體在CLR裏面高達1600多行,這裏僅截取一些 class MethodDesc

原创 .Net 7 團隊把國內的龍芯確實當做一等公民和棄用的項目

楔子: 國內龍芯據說是用的自己的指令集,在研究ILC的時候,發現了龍芯在微軟那邊確實是一等公民的存在。 龍芯官網 龍芯平臺.NET,是龍芯公司基於開源社區.NET獨立研發適配的龍芯版本,我們會長期進行安全更新和錯誤修復,並持續進行性能優

原创 .Net 7 的AOT的程序比託管代碼更容易破解?

楔子 .Net 7的一個重要功能是把託管的源碼編譯成Native Code,也就是二進制文件。此舉看似增加了程序反編譯難度,實際上是減少了程序的破解難度。本篇在不觸及整個程序架構的前提下,以簡單的例子來修改Native AOT exe文件的

原创 .Net 7裏的函數.Ctor和.CCtor是幹啥用的呢?你知道嗎

楔子 有小夥伴被面試官問到這個問題,本篇徹底解析下這個問題。 爲了徹底點,注意本篇是最底層的.Net 7 RC CLR運行模型(彙編)爲基礎進行全局剖析,局部業務分析。 如有疏漏,請斧正。 目的非手段 這兩個函數比較特殊的存在,.Cto

原创 Substring 在BCL和CLR裏面搞了啥

楔子 還是做點事情,不要那麼散漫。 本文以簡單的Substring(int startindex,int Length)函數爲例,來遞進下它在託管和非託管的一些行爲。 以下均爲個人理解,如有疏漏請指正。 定義和實現 它的定義是在Sys

原创 .Net CLR異常簡析

楔子 前面一篇研究了下C++異常的,這篇來看下,CLR的異常內存模型,實際上都是一個模型,承繼自windows異常處理機制。不同的是,有VC編譯器(vcruntime.dll)接管的部分,被CLR裏面的函數ProcessCLRExcepti

原创 windows C++ 異常調用棧簡析

楔子 以win11 + vs2022運行VC++ 編譯觀察的結果。 如果安裝了Visual Studio 2022,比如安裝在D盤,則路徑: D:\Visual Studio\IDE\VC\Tools\MSVC\14.33.31629 下

原创 GC plan_phase二叉樹掛接的一個算法

楔子 在看GC垃圾回收plan_phase的時候,發現了一段特殊的代碼,仔細研究下得知,獲取當前數字bit位裏面爲1的個數。 通過這個bit位爲1的個數(count),來確定掛接當前二叉樹子節點的一個地方。 算法 size_t logco

原创 .Net CLR GC 動態加載短暫堆閾值的計算及閾值超量的計算

楔子 今天你躺平了嗎?生活是如此的無趣,歡迎大家一起來躺平 前言: 很多書籍或者很多文章,對於CLR或者GC這塊只限於長篇大論的理論性概念,對於裏面的如何運作模式,卻幾乎一無所知。高達近百萬行的CPP文件,畢竟讀懂的沒有幾個。以下取自CL

原创 .Net CLR GC動態獲取函數頭地址,C++的騷操作(慎入)

前言: 太懶了,從沒有在這裏正兒八經的寫過文章。看到一些人的高產,真是慚愧。決定稍微變得不那麼懶。如有疏漏,請指正。 .net的GC都談的很多了,本篇主要是劍走偏鋒,聊聊一些個人認爲較爲核心的細節方面的問題。至於,標記,計劃,壓縮,清掃這些

原创 .Net GC 結構體GCInfo剖析,

前言: dotnet已經發展到了 preview 7的版本,這個GC回收的文章或者視頻非常少,幾乎沒有看到,有個別的也是模糊不清或者三言兩語,或者太過於籠統,或者作者自己都沒搞明白爲啥是這樣。至於深入到GC裏面的GCinfo結構體就更少見了

原创 在Main函數之前運行代碼(執行一些動作或者方法)兩種方式

Main是函數的入口,也就是第一執行人,如何在Man函數之前運行一些代碼呢? 有兩種方法: 1.通過RunStartupHooks(DOTNET_STARTUP_HOOKS ),也就是添加環境變量的形式 點擊查看代碼 public cl

原创 這幾天找工作的經歷

前言: 只做自己認爲正確的 不要對自己期望太高,也不要自暴自棄,國人講究中庸之道,那麼確實明智之理 概述 由於從上家公司離職,已經快兩年的時間了。這兩年過得是很愜意的,甚至可以以網上的躺平來形容,當然自己也是這麼做的。因爲從來都不認爲自己

原创 CLR 編譯函數的兩種結果的原因

起因 1.由於最近可能是太閒了,也可能是自己玩的無聊,於是乎就找了些代碼看看。這些代碼其實一直看的。發現一個問題,當coreclr 2.2.5編譯一個函數的時候,它底層被編譯出來的是三級只針對形式,但是在VS裏面用用2.1.3編譯這個函數的

原创 衆生皆苦,己也苦。卻見不得終生疾苦

芸芸衆生,疾苦歷身 各種苦難圍繞着底層如螻蟻般的屌絲,他們本能的帶着可愛可憎以及可憐的本質 在情緒變化中交織着 隆冬晚上,一個老人,洗了個澡,換了身乾淨衣服。然後燒了一盆炭火,關上窗戶,躺在牀上靜靜的一氧化碳中毒死亡。 當人們發現他的時候,