原创 C#裏的var和dynamic區別到底是什麼,你真的搞懂了嘛

前言 這個var和dynamic都是不確定的初始化類型,但是這兩個本質上的不同。不同在哪兒呢?var編譯階段確定類型,dynamic運行時階段確定類型。這種說法對不對呢?本篇看下,文章原文地址:在這裏 概括 以下詳細敘述下這兩個(var,d

原创 .Net7基礎類型的優化和循環克隆優化

前言 .Net7裏面對於基礎類型的優化,是必不可少的。因爲這些基礎類型基本上都會經常用到,本篇除了基礎類型的優化介紹之外,還有一個循環克隆的優化特性,也一併看下。 概括 1.基礎類型優化 基礎類型的優化有些不會涉及ASM,主要是記憶。 一

原创 .Net7矢量化的性能優化

前言 矢量化是性能優化的重要技術,也是寄託硬件層面的優化技術。本篇來看下。文章來源:微軟官方博客 概括 一:矢量化支持的問題: 矢量化的System.Runtime.Intrinsics.X86.Sse2.MoveMask 函數和矢量化的

原创 .Net8罕見的技術:MSIL的機器碼簡析

前言 一般的只有最終的彙編代碼纔有機器碼錶示,然一個偶然的機會發現,MSIL(Microsoft intermediate language)作爲一箇中間語言表示,居然也有機器碼,其實這也難怪,計算機裏面萬物都是二進制,本篇來看下,以下以.

原创 .Net8頂級技術:邊界檢查之IR解析(二)

前言 IR技術應用在各個編程語言當中,它屬於JIT的核心部分,確實有點點麻煩。但部分基本明瞭。本篇通過.Net8裏面的邊界檢查的小例子瞭解下。前情提要,看這一篇之前建議看看前一篇:點擊此處,以便於理解。 概括 1.前奏 先上C#代碼: [

原创 .Net8頂級技術:邊界檢查之IR解析(慎入)

前言 C#這種語言之所以號稱安全的,面向對象的語言。這個安全兩個字可不是瞎叫的哦。因爲JIT會檢查任何可能超出分配範圍的數值,以便使其保持在安全邊界內。這裏有兩個概念,其一邊界檢查,其二IR解析。後者的生成是前者的功能的保證。啥叫IR,你以

原创 .Net8的快速JIT,分層編譯,R2R的設置

前言 本篇通過一些簡單的JIT設置,比如快速JIT,適用於循環的快速 JIT,分層編譯,R2R等核心內容設置,快速進入.Net8核心區域。 概括 1.快速JIT 什麼是快速JIT,顧名思義,被Rosyln編譯的.Net源碼進行快速的機器碼

原创 .Net7 GC標記階段代碼的改變

前言 由於業務需求,在探究.Net7的CLR,發現了一個不通的地方,也就是通過GCInfo獲取到了對象之後。它並沒有在GcScanRoots(對象掃描標記)裏面對它進行標記,那麼如果沒有標記這個對象如何被計劃階段構建呢?仔細研讀,發現它跟之

原创 Java/.Net雙平臺核心,Jvm和CLR運行異同點

前言: 本篇以.Net 7.0.2 CLR 和 OpenJDk19參照,解析下它們各自調用函數的異同。 以下爲個人理解。 概述 JDK大約5.9G,CLR大約7.6G,兩者相差1.7G左右。 root@tang-virtual-machi

原创 Arm-Linux子系統的互相Notify

前言: Linux下面不同的子系統一個個的組成了整個系統的運行環節,爲了讓這些子系統能夠互相通訊,有一種叫做:notify chain(通知鏈)的東西。本篇看下。 概括 所謂通知鏈,有通知,就有執行的地方。比如A子系統通知B子系統,麻煩

原创 進階技術:Linux Arm32是如何調用C Main的

前言: Linux x64通過qemu的rdinit方式調用的C Main,實際上是通過load_elf_binary(加載和解析elf)和start_thread(設置Ip和sp),用缺頁異常來調用。關於這點可以看這篇文章:點擊查看。那麼

原创 .Net7運行模型之託管Main函數的調用

前言: .Net7的CLR最具特色的一個地方,就是運行模型。因爲它主宰了整個CLR的運行過程。 又因爲其龐大的代碼量,有的幾十萬行甚至百萬行。所以理解起來非常不容易。本篇拆分來看下,裏面一個細節Main函數(注意這裏的Main指的是託管Ma

原创 .Net 7 高端玩法,自定義一個CLR運行時

前言: 曾幾何時,一直想自己定製一個CLR運行時玩玩。滿足下技術控的虛榮心,本篇帶你一步一步打造一個屬於自己的.Net 7運行時。 概括 假設你的電腦已經安裝了.Net,並且運行正常。在進行自定義運行時之前,首先需要準備三樣東西。 其

原创 .Net 7 託管Main入口的四種寫法(茴香豆?)

前言: 按照CLR的規則,C#託管Main入口其實有四種寫法。 寫法 第一種:最常見的,也是VS默認的,返回值void,帶一個參數 static void Main(string[] args) { Console.Write("

原创 .Net 7 被Microsoft的開源免費PowerToys工具獨立附帶

楔子 什麼是PowerToys? Microsoft PowerToys 是一組實用工具,可幫助高級用戶調整和簡化其 Windows 體驗,從而提高工作效率。 簡而言之,就是給最新的windows11系統增加各種強勁的好玩的功能。最重要的是