To pass build in types by reference.
Code + Asm
Code:
1 #include <iostream>
2
3 void function(const int a)
- 4 {
- 5 int x = a;
- 6 }
7
8 int main()
- 9 {
- 10 function(10);
- 11 return 0;
- 12 }
Code:
- 0x40139e <main>: push ebp
- 0x40139f <main+1>: mov ebp,esp
- 0x4013a1 <main+3>: sub esp,0x8
- 0x4013a4 <main+6>: and esp,0xfffffff0
- 0x4013a7 <main+9>: mov eax,0x0
- 0x4013ac <main+14>: add eax,0xf
- 0x4013af <main+17>: add eax,0xf
- 0x4013b2 <main+20>: shr eax,0x4
- 0x4013b5 <main+23>: shl eax,0x4
- 0x4013b8 <main+26>: mov DWORD PTR [ebp-4],eax
- 0x4013bb <main+29>: mov eax,DWORD PTR [ebp-4]
- 0x4013be <main+32>: call 0x40d080 <_alloca>
- 0x4013c3 <main+37>: call 0x40ccc0 <__main>
- 0x4013c8 <main+42>: mov DWORD PTR [esp],0xa
- 0x4013cf <main+49>: call 0x401390 <_Z8functioni>
- 0x4013d4 <main+54>: mov eax,0x0
- 0x4013d9 <main+59>: leave
- 0x4013da <main+60>: ret
And by reference
Code:
1 #include <iostream>
2
3 void function(const int &a)
- 4 {
- 5 int x = a;
- 6 }
7
8 int main()
- 9 {
- 10 function(10);
- 11 return 0;
- 12 }
Code:
- 0x4013a0 <main>: push ebp
- 0x4013a1 <main+1>: mov ebp,esp
- 0x4013a3 <main+3>: sub esp,0x18
- 0x4013a6 <main+6>: and esp,0xfffffff0
- 0x4013a9 <main+9>: mov eax,0x0
- 0x4013ae <main+14>: add eax,0xf
- 0x4013b1 <main+17>: add eax,0xf
- 0x4013b4 <main+20>: shr eax,0x4
- 0x4013b7 <main+23>: shl eax,0x4
- 0x4013ba <main+26>: mov DWORD PTR [ebp-8],eax
- 0x4013bd <main+29>: mov eax,DWORD PTR [ebp-8]
- 0x4013c0 <main+32>: call 0x40d080 <_alloca>
- 0x4013c5 <main+37>: call 0x40ccc0 <__main>
- 0x4013ca <main+42>: mov DWORD PTR [ebp-4],0xa
- 0x4013d1 <main+49>: lea eax,[ebp-4]
- 0x4013d4 <main+52>: mov DWORD PTR [esp],eax
- 0x4013d7 <main+55>: call 0x401390 <_Z8functionRKi>
- 0x4013dc <main+60>: mov eax,0x0
- 0x4013e1 <main+65>: leave
- 0x4013e2 <main+66>: ret
Now by just looking at the ASM it seems that calling a built in type by passing not by reference is a faster method, is this true or am I just not interperting this right. No, I don't care that much about speed more of a knowledge question.