Android 台灣中文網

標題: CIL Byte Code [打印本頁]

作者: kuoyuwu    時間: 2014-12-8 11:01
標題: CIL Byte Code
各位版大神人~ 小弟看了一陣子的 CIL 了

有個疑問找了很久都找不到如下舉例:

    IL_0069:  /* 6F   | (06)000DC2       */ callvirt   instance bool Floor::get_isCleared()
                                 ^^^
06 為呵要括號?

如有任何參考資料也請提供下小弟研讀~

作者: manleong20    時間: 2014-12-8 14:02
你是说get_iscleared() 吗? 哪个是一个检测通关以否的函数
作者: kuoyuwu    時間: 2014-12-9 09:41
manleong20 發表於 2014-12-8 14:02
你是说get_iscleared() 吗? 哪个是一个检测通关以否的函数

6F   | (06)000DC2 ==> 那為何 (06) 要括號? 是函數回傳值 ?
作者: ASOSO    時間: 2014-12-9 12:46
(06) 是基本指令 ldftn <method>
將方法指標推入堆疊。
後面 000DC2 則是該 ldftn 與指標 offset 值,
用 WinHex 就能看的非常清楚。
作者: kuoyuwu    時間: 2014-12-9 17:46
ASOSO 發表於 2014-12-9 12:46
(06) 是基本指令 ldftn
將方法指標推入堆疊。
後面 000DC2 則是該 ldftn 與指標 offset 值,

ASOSO大大~ 那我這樣解釋不知道對不對...

6F: callvirt <method> - Call an object method
而這個 callvirt method 再次執行基本指令 (06): ldftn <method>
Push a pointer(000DC2) to method on the stack.

執行完畢後 stack top 就是 bool 值然後被 pop 出來...

不知這樣理解對嗎 ?




歡迎光臨 Android 台灣中文網 (https://apk.tw/) Powered by Discuz! X3.1