1
Q
在CIL中分支
A
回答
1
的beq target
指令傳輸控制(「跳躍」)的目標,如果堆頂兩個值相等。這與ceq
指令後跟brtrue target
相同。鑑於方法:
static int BranchTest(int value1, int value2)
{
if (value1 == value2)
{
return SomeMethod(0);
}
else
{
return SomeMethod(1);
}
}
它可以(但這只是一個examplatory碼)翻譯成:
.method private hidebysig static
int32 BranchTest (
int32 value1,
int32 value2
) cil managed
{
// ...
IL_0000: ldarg.0 // load value1 on stack
IL_0001: ldarg.1 // load value2 on stack
IL_0002: beq IL_000b // compare and jump conditionaly
IL_0004: ldc.i4.1
IL_0005: call int32 ConsoleLeak.Program::SomeMethod(int32)
IL_000a: ret
IL_000b: ldc.i4.0
IL_000c: call int32 ConsoleLeak.Program::SomeMethod(int32)
IL_0011: ret
}
相關問題
- 1. 在CIL(MSIL)中的Stringbuilder
- 2. 在CIL(OCaml)中打印
- 3. 在CIL中做什麼「auto」,「ansi」和「cil managed」?
- 4. Frama-C:在Cil謂詞中替換Cil術語
- 5. 在ClearCase中分支分支?
- 6. 在cil代碼中獲得'ldftn'函數指針,在cil代碼中使用ldftn'
- 7. CIL ANTLR語法?
- 8. 寫入CIL
- 9. 在多個分支中使用分支
- 10. 在git中創建分支的分支?
- 11. 如何在Git中分支分支?
- 12. CIL中的nop是什麼?
- 13. 錯誤在CIL中。未找到方法:'?'
- 14. ldc.i4.m1和ldc.i4.M1在CIL中
- 15. 在CIL中定義自定義屬性
- 16. GitHub中的分支分支
- 17. 在TFS中分支
- 18. 優化CIL輸出
- 19. .NET CIL Call或CallVirt?
- 20. 在分支分支提交後,在Mercurial中留有兩個默認分支
- 21. 拆分分支在兩個分支/合併分支有選擇
- 22. 分支分支,如何在另一分支進行分配?
- 23. 在每個任務分支策略中將任務分支提升到分支中的主分支
- 24. 在git中合併2個分支忽略中間的分支?
- 25. Subversion - 分支分支
- 26. 基於兩個未分支分支在分支上工作
- 27. SVN - 正在創建從分支分支到分支的錯誤?
- 28. 如何從空主分支中分支
- 29. 從TFS中的分支創建分支
- 30. Perforce分支中的Perforce分支
你是說你完全瞭解所有其他指令*除了*'beq'?如果是這樣,那麼你覺得混亂/不符合其他說明呢?或者,我們是否期待着大量的問題,每一個問題都涉及單個指令? – 2015-03-19 07:49:13
其餘的似乎很清楚,但我不明白分支的概念。 – BendEg 2015-03-19 07:53:37
如果(a == b)轉到 – 2015-03-19 07:59:45