PTT
Submit
Submit
選擇語言
正體中文
简体中文
PTT
C_and_CPP
[問題] 關於函數大小與機器碼
作者:
NilPtr
(神奇的空指標)
2015-03-29 18:39:33
請問有沒有辦法在不內聯組合語言的情況下從
C/C++ 查看函數的機器碼與大小?
之前有嘗試過用函數指標配 While 去輸出機器碼,
用的方法是讀到 0xC3 (ret) 停止,不過算是個爛方法吧。
請問有沒有更好的方法來達到這項功能?
作者:
LPH66
(-6.2598534e+18f)
2015-03-29 18:43:00
我比較好奇你想做什麼...
作者:
Killercat
(殺人貓™)
2015-03-29 19:12:00
__builtin_frame_address可以得到函數起點GCC/G++ only, 不過終點我不太清楚怎麼拿這東西會傳回函數的parameter stack位置
作者:
azureblaze
(AzureBlaze)
2015-03-29 19:16:00
撈debug symbol吧可是這還不如直接用debugger另外只是要看機械碼怎麼產生還是直接看文件吧
http://goo.gl/cu5ggP
#1J3XmLtsobjdump -d 也可以直接給你機械碼和asm對照
作者:
Killercat
(殺人貓™)
2015-03-29 20:02:00
其實他要寫的東西跟debugger已經沒啥兩樣了
作者:
tjjh89017
(伊達政宗)
2015-03-29 20:11:00
我怎麼覺得他想寫的比較像 JIT compiler 啊XD
作者:
dirkc
(3781615)
2015-03-29 22:57:00
你的玩具真有趣 不過c3很容易出錯啊 mov ebx,eax 就89c3了你的問題我之前也想問,objdump可以符合你要的嗎?沒空看objdump的src,不曉得它原理怎麼做的?
作者:
king19880326
(OK的啦~我都可以接受)
2015-03-29 23:17:00
objdump 就是先讀 header 才去 text segment 逐步disassemble
作者:
carylorrk
(carylorrk)
2015-03-30 00:24:00
大多數 basic block 就是以 jump inst 來判斷的如果你是做 instruction level 的 interpreter 或 JIT應該是直接這麼參考最快,可以參考 QEMU除非你有要做什麼最佳化必須判斷原始語言結構...
作者:
suhorng
( )
2015-03-30 20:58:00
不太懂, 看編譯器產生出來的組合語言原始檔可以嗎?原來是要看最後的機器碼喔....
作者:
king19880326
(OK的啦~我都可以接受)
2015-03-31 10:16:00
可以知道函數佔了多少的大小啊, executable 裡面有symbol table這個問題如果沒有 symbol table 的幫忙難度就高很多最典型的難題就是 ARM mix 了 thumb instruction
作者:
dirkc
(3781615)
2015-04-01 18:33:00
我知道table裡面有函式起始位址,但也有長度大小的資訊嗎?可否給個關鍵字,感謝
作者:
azureblaze
(AzureBlaze)
2015-04-01 20:08:00
直接找下個函數的起始位置?
作者:
dirkc
(3781615)
2015-04-01 22:31:00
1.不一定按順序排(這還可解決)2.似乎沒有保證(?)連續兩相對位址之差為一函式的長度?
作者:
azureblaze
(AzureBlaze)
2015-04-01 23:52:00
1.找下一個位址最接近的函數2.通常函數區域裡不會擺變數之類的東西NOP等怎麼算就是定義的問題了
作者:
king19880326
(OK的啦~我都可以接受)
2015-04-03 05:36:00
symbol table 裡面有 function size. st_size 就是
作者:
dirkc
(3781615)
2015-04-03 09:16:00
謝謝
繼續閱讀
[問題] structure vector沒有辦法在function使用
bjiyxo
Fw: [問題] pic16f877a 與電腦溝通問題
pulist
[討論] 關於程式可攜性的問題
MaxHaru
[問題] 單晶片UART當掉
Haha10101
[問題] 要怎麼觀察單步執行的時間呢?
LeeGarDer
[問題] class method 回傳使用自定義型別
diabloevagto
[問題] 連續讀檔(fopen)無法fclose
jiqian
[問題] 打程式的速度
Bruce003
[問題] 如何利用C程式從網頁複製文字或表格?
Bruce003
[問題] 結構包二維結構資料傳遞方式
akiramaru
Links
booklink
Contact Us: admin [ a t ] ucptt.com