C# 到 IL 深度解析:第3章 選擇與循環 (2) - 無條件分支 br、布爾值表現與 if 語句編譯
br 指令:IL 控制流的核心 br 無條件跳轉到指定標籤。br.s 為短跳轉(1 字節運算元),功能相同。範例中 br.s a2 使 ldc.i4.s 30
C# 到 IL 深度解析:第3章 選擇與循環 (3) - if-else 與區域變數作用域的 IL 實現
if-else 在 IL 中的雙分支結構 IL 無 if 指令,if-else 編譯為:條件分支(brfalse)跳過 if 區塊,執行完 if 區塊後以無條件
C# 到 IL 深度解析:第3章 選擇與循環 (4) - 變數作用域與 while 循環的 IL 實現
C# 與 IL 的變數作用域差異 C# 同層級大括號內不可重複宣告同名變數;IL 則將其視為不同區域變數(如 V_0、V_1),不受區塊作用域限制。 whil
C# 到 IL 深度解析:第3章 選擇與循環 (6) - 關係操作符 (>, <, ==) 的 IL 指令對應
關係操作符對應的 IL 指令 → cgt:檢查堆疊首值是否大於次值,結果 1/0。 → clt:檢查首值是否小於次值。 == → ceq:檢查相等性,結果
C# 到 IL 深度解析:第3章 選擇與循環 (7) - 比較操作符 (<=、>=) 與 != 的 IL 實現細節
小於等於 (=) 的複合邏輯 = 在 IL 中先用 cgt 判斷第一個數是否大於第二個;若否(結果 0),再用 ceq 判斷是否相等。最終結果為 cgt 結果或
C# 到 IL 深度解析:第3章 選擇與循環 (8) - while 循環與靜態變數的 IL 實現
不等於操作符 (!=) 的 IL 實現 != 使用兩個 ceq 指令:第一個比較兩值是否相等,第二個將結果與 0 比較(即邏輯非)。 while 循環範例與靜
C# 到 IL 深度解析:第3章 選擇與循環 (10) - for 與 while 循環的等價轉換
for 與 while 的功能等價性 C# 中 for 和 while 可互相轉換。for 循環的第一分號前初始化碼僅執行一次,因此編譯為 IL 時,初始化指令
C# 到 IL 深度解析:第3章 選擇與循環 (11) - do-while 與 while 循環的 IL 差異
do-while 與 while 的條件檢查時機 do-while:條件在循環結尾檢查,循環體至少執行一次。 while:條件在循環開頭檢查,循環體可能從未執
C# 到 IL 深度解析:第3章 選擇與循環 (12) - break 語句與 continue 的 IL 實現
break 強制退出循環的 IL 邏輯 break 會強迫程式離開 for、while 或 do-while 循環。在 IL 中,這表現為無條件分支 br.s
C# 到 IL 深度解析:第3章 選擇與循環 (13) - continue、break、goto 與 for 循環的 IL 實現
continue 語句在 IL 中的運作機制 在 C# 中,continue 語句會使 for 循環直接跳到迭代的結束位置。當 if 條件為 true 時,程式
《C# to IL》第二章 IL 基礎(二)
ILDASM 反組譯觀察 移除註解、雜訊後,核心 IL 如下: .assembly mukhi {} .class private auto ansi zzz
《C# to IL》第二章 IL 基礎(三)
.cctor 命名慣例 C# 靜態建構函式編譯為 .cctor;實例建構函式為 .ctor。無參數建構函式會自動產生。 執行順序 .cctor(若存在) .
《C# to IL》第二章 IL 基礎(四)
newobj 指令 newobj instance void zzz::.ctor() 在記憶體建立物件,呼叫 .ctor。證明 IL 非低階組語,保有物件導向
《C# to IL》第二章 IL 基礎(五)
建構函式執行時機 實例建構函式:newobj 後執行 靜態建構函式:首次存取類別前由 CLR 自動執行,早於任何實例建構 .cctor 不呼叫基類 .ccto
《C# to IL》第二章 IL 基礎(六)
靜態/實例欄位與建構函式 .field private static int32 i .field public int64 j .method public
《C# to IL》第二章 IL 基礎(七)
建構函式執行順序 IL 明確展示:先初始化所有欄位,再執行建構函式本體;基類建構函式最先執行。 WriteLine 多載 ldc.i4.s 10 call v