gpt4 book ai didi

c++ - 确定c++方法的大小

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:23:02 25 4
gpt4 key购买 nike

我有一个 .cpp 文件,其中定义了各种方法:

// test.cpp

// foo() is not inlined
void foo() {
...
}

我编译它:

g++ test.cpp -o test.o -S

现在我想通过检查 test.o 来确定指令 foo() 占用了多少字节的内存。我该怎么做?

我问是因为通过仔细的分析和实验,我确定我正在招致指令缓存未命中,导致某些关键路径上的速度显着下降。因此,我想了解各种方法占用了多少字节,以指导我缩小指令集大小的努力。

最佳答案

我不会为此推荐 -S 标志,除非您喜欢 ISA 的手动和手动计算指令大小。取而代之的是,只需构建和反汇编,答案很快就会出来:

$ cc -c example.c 
$ objdump -d example.o

example.o: file format elf64-x86-64


Disassembly of section .text:

0000000000000000 <f>:
0: 55 push %rbp
1: 48 89 e5 mov %rsp,%rbp
4: 89 7d fc mov %edi,-0x4(%rbp)
7: 8b 45 fc mov -0x4(%rbp),%eax
a: 83 c0 03 add $0x3,%eax
d: 5d pop %rbp
e: c3 retq

如您所见,此函数有 15 个字节长。

关于c++ - 确定c++方法的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28352604/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com