Home > Software engineering >  How are non-static, non-virtual methods implemented in C ?
How are non-static, non-virtual methods implemented in C ?

Time:03-02

I wanted to know how methods are implemented in C . I wanted to know how methods are implemented "under the hood". So, I have made a simple C program which has a class with 1 non static field and 1 non static, non virtual method. Then I instantiated the class in the main function and called the method. I have used objdump -d option in order to see the CPU instructions of this program. I have a x86-64 processor. Here's the code:

#include<stdio.h>


class TestClass {
public:
   int x;
   int xPlus2(){
       return x   2;
   }
};

int main(){
    TestClass tc1 = {5};
    int variable = tc1.xPlus2();
    printf("%d \n", variable);
    return 0;
}

Here are instructions for the method xPlus2:

  0000000000402c30 <_ZN9TestClass6xPlus2Ev>:
  402c30:   55                      push   %rbp
  402c31:   48 89 e5                mov    %rsp,%rbp
  402c34:   48 89 4d 10             mov    %rcx,0x10(%rbp)
  402c38:   48 8b 45 10             mov    0x10(%rbp),%rax
  402c3c:   8b 00                   mov    (%rax),           
  • Related