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