,ldftn用於獲取調用委託構造函數(即.ctor(object,native int))的函數指針地址。
如何獲取用於在C#中構造委託的函數指針?在cil代碼中獲得'ldftn'函數指針,在cil代碼中使用ldftn'
5
A
回答
5
您的問題的表述方式很難理解您實際嘗試做什麼。我認爲,也許你想要的是這樣的:
MethodInfo mi = ...
var ptr = mi.MethodHandle.GetFunctionPointer();
// now call a delegate .ctor using that ptr
3
如果你正在尋找的Reflection.Emit的代碼應該是什麼樣子,然後是這樣的:
il.Emit(OpCodes.Ldftn, yourMethodInfo);
il.Emit(OpCodes.Newobj, yourDelegateType.GetConstructors()[0]);
第一行加載函數指針到堆棧。第二行「傳遞」給委託的構造函數。 yourDelegateType
應該是類似於typeof(Func<string>)
等。
相關問題
- 1. .NET CIL代碼大小
- 2. 如何編譯CIL代碼?
- 3. 更改CIL代碼爲本地代碼在C#
- 4. CIL數據類型和它們在C#中的等效代碼
- 5. 如何將CIL代碼插入到C#
- 6. 在CIL中分支
- 7. 在CIL(MSIL)中的Stringbuilder
- 8. 在CIL(OCaml)中打印
- 9. 在CIL中做什麼「auto」,「ansi」和「cil managed」?
- 10. Frama-C:在Cil謂詞中替換Cil術語
- 11. 函數中的指針如何在此代碼中工作?
- 12. 尋找cil的代碼列表,如16,17,18,19,22所做的那樣
- 13. 指針代碼
- 14. 參數如何在CIL函數調用中傳遞?
- 15. CIL的邏輯指令
- 16. CIL堆棧交換指令
- 17. CIL指令「isinst <valuetype>」
- 18. 函數指針是從代碼
- 19. 混合代碼 - 函數成員指針
- 20. 在C++代碼中追蹤指針gdb
- 21. 在函數指針代碼中顯示錯誤
- 22. 在JavaScript函數中使用HTML代碼
- 23. 有沒有辦法將C++代碼編譯爲Microsoft .Net CIL(字節碼)?
- 24. CIL中沒有運行代碼的正確技術術語是什麼?
- 25. 是否有任何從Visual Studio項目中編譯CIL代碼的示例
- 26. CIL ANTLR語法?
- 27. 寫入CIL
- 28. CIL中的nop是什麼?
- 29. 錯誤在CIL中。未找到方法:'?'
- 30. ldc.i4.m1和ldc.i4.M1在CIL中
你想要的原始指針地址,或者你只是想在一個變量委託對象? – siride 2010-10-12 14:50:07
用於調用.ctor的函數指針(即.ctor(object,[native int])) – Kii 2010-10-12 14:55:41
這很不清楚你在說什麼。 _methodPtr值只能由JIT編譯器生成。在爲該方法生成機器碼之前沒有任何要調用的東西。 – 2010-10-12 15:39:51