相关疑难解决方法(0)

获取C++函数的大小

我正在阅读这个问题,因为我试图在C++程序中找到一个函数的大小,暗示可能有一种特定于平台的方法.我的目标平台是windows

我目前掌握的方法如下:
1.获取指向函数
的指针2.递增指针(和计数器),直到达到3的机器代码值ret
.计数器将是函数的大小?

编辑1:澄清我的意思'大小'我的意思是组成函数的字节数(机器代码).
编辑2:有一些评论询问为什么或我打算用这个做什么.诚实的答案是我没有意图,我无法真正看到了解函数长度预编译时间的好处.(虽然我确定有一些)

这对我来说似乎是一种有效的方法,这会有用吗?

c++ windows code-size

22
推荐指数
4
解决办法
1万
查看次数

如何从C程序内部或内联汇编中获取C函数的大小?

假设我有如下函数:

# cat 003.c

int foo(int a, int b)
{
    return a+b;
}
Run Code Online (Sandbox Code Playgroud)

并像这样编译它:

gcc -S 003.c
Run Code Online (Sandbox Code Playgroud)

得到以下汇编结果:

     .file   "003.c"
     .text
 .globl foo
     .type   foo, @function
 foo:
 .LFB2:
     pushq   %rbp
 .LCFI0:
     movq    %rsp, %rbp
 .LCFI1:
     movl    %edi, -4(%rbp)
     movl    %esi, -8(%rbp)
     movl    -8(%rbp), %edx
     movl    -4(%rbp), %eax
     addl    %edx, %eax
     leave
     ret
 .LFE2:
     .size   foo, .-foo /* size of the function foo, how to get it?*/
Run Code Online (Sandbox Code Playgroud)

上面的最后一行确实得到了函数的大小.编译器在哪里存储大小?我可以使用C或内联asm在我的原始C程序中以某种方式获取函数的大小吗?

c assembly gcc gnu-assembler elf

7
推荐指数
1
解决办法
7726
查看次数

如何打印任何功能的大小.之前有人问过,但答案不是粒子?

如何打印任何功能的大小?这个问题被问到但答案不是粒子.根据之前的回答不同,当我使用内置函数来查找函数的大小时?

 #include<stdio.h>
 void print(void)
 {

    printf("i m in print \n");

 }
 int main()
 {
      printf("%d\n",(int)main-(int)print); // o/p is 20 byte  what is this 20    
                                           //is size of function?previous asked answer
      printf("size=%d\n",sizeof(print));// o/p is 1 byte ? how to get exact plz help?
 }
Run Code Online (Sandbox Code Playgroud)

c sizeof

-3
推荐指数
2
解决办法
96
查看次数

标签 统计

c ×2

assembly ×1

c++ ×1

code-size ×1

elf ×1

gcc ×1

gnu-assembler ×1

sizeof ×1

windows ×1