Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- g++ move.cpp -std=c++11 -c -g -m32
- objdump -d -M intel -S move.o
- /////////////////////// code
- #include <utility>
- #include <stdio.h>
- struct foo
- {
- int a, b, c, d, e;
- };
- int main()
- {
- foo f1 = { 1, 2, 3, 4, 5 };
- foo f2 = std::move( f1 );
- printf( "f2.c: %d\n", f2.c );
- return 0;
- }
- /////////////////////// asm
- 00000000 <_main>:
- {
- int a, b, c, d, e;
- };
- int main()
- {
- 0: 55 push ebp
- 1: 89 e5 mov ebp,esp
- 3: 83 e4 f0 and esp,0xfffffff0
- 6: 83 ec 40 sub esp,0x40
- 9: e8 00 00 00 00 call e <_main+0xe>
- foo f1 = { 1, 2, 3, 4, 5 };
- e: c7 44 24 2c 01 00 00 mov DWORD PTR [esp+0x2c],0x1
- 15: 00
- 16: c7 44 24 30 02 00 00 mov DWORD PTR [esp+0x30],0x2
- 1d: 00
- 1e: c7 44 24 34 03 00 00 mov DWORD PTR [esp+0x34],0x3
- 25: 00
- 26: c7 44 24 38 04 00 00 mov DWORD PTR [esp+0x38],0x4
- 2d: 00
- 2e: c7 44 24 3c 05 00 00 mov DWORD PTR [esp+0x3c],0x5
- 35: 00
- foo f2 = std::move( f1 );
- 36: 8d 44 24 2c lea eax,[esp+0x2c]
- 3a: 89 04 24 mov DWORD PTR [esp],eax
- 3d: e8 00 00 00 00 call 42 <_main+0x42>
- 42: 8b 10 mov edx,DWORD PTR [eax]
- 44: 89 54 24 18 mov DWORD PTR [esp+0x18],edx
- 48: 8b 50 04 mov edx,DWORD PTR [eax+0x4]
- 4b: 89 54 24 1c mov DWORD PTR [esp+0x1c],edx
- 4f: 8b 50 08 mov edx,DWORD PTR [eax+0x8]
- 52: 89 54 24 20 mov DWORD PTR [esp+0x20],edx
- 56: 8b 50 0c mov edx,DWORD PTR [eax+0xc]
- 59: 89 54 24 24 mov DWORD PTR [esp+0x24],edx
- 5d: 8b 40 10 mov eax,DWORD PTR [eax+0x10]
- 60: 89 44 24 28 mov DWORD PTR [esp+0x28],eax
- printf( "f2.c: %d\n", f2.c );
- 64: 8b 44 24 20 mov eax,DWORD PTR [esp+0x20]
- 68: 89 44 24 04 mov DWORD PTR [esp+0x4],eax
- 6c: c7 04 24 01 00 00 00 mov DWORD PTR [esp],0x1
- 73: e8 00 00 00 00 call 78 <_main+0x78>
- return 0;
- 78: b8 00 00 00 00 mov eax,0x0
- }
- 7d: c9 leave
- 7e: c3 ret
- 7f: 90 nop
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement