//// main.cpp// asm_study//// Created by mac on 12-12-24.// Copyright (c) 2012年 mac. All rights reserved.//#include <iostream>class base{public: base(){} virtual ~base(){} virtual int print()const{ return _a; } int _a;};class derived : public base{public: derived(){} virtual ~derived(){} virtual int print()const{ return _b; } int _b;};int main(int argc, const char * argv[]){ // insert code here... derived* d=new derived(); std::cout << "Hello, World!\n"; d->print(); delete d; return 0;}
asm_study`main at main.cpp:29:0x1000011a0: pushq %rbp0x1000011a1: movq %rsp, %rbp0x1000011a4: subq $96, %rsp0x1000011a8: movl $0, -4(%rbp)0x1000011af: movl %edi, -8(%rbp)0x1000011b2: movq %rsi, -16(%rbp)0x1000011b6: movl $16, %edi0x1000011bb: callq 0x100001bac ; symbol stub for: operator new(unsigned long)0x1000011c0: movq %rax, %rsi0x1000011c3: movq %rax, %rdi0x1000011c6: movq %rdi, -48(%rbp)0x1000011ca: movq %rax, %rdi0x1000011cd: movq %rsi, -56(%rbp)0x1000011d1: callq 0x100001260 ; derived::derived() at main.cpp:220x1000011d6: jmpq 0x1000011db ; main + 59 at main.cpp:320x1000011db: movq 3670(%rip), %rdi ; (void *)0x00007fff73f26910: std::__1::cout0x1000011e2: leaq 2835(%rip), %rsi ; "Hello, World!\n"0x1000011e9: movq -56(%rbp), %rax0x1000011ed: movq %rax, -24(%rbp)0x1000011f1: callq 0x100001b82 ; symbol stub for: std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::operator<<<std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char const*)0x1000011f6: movq -24(%rbp), %rsi0x1000011fa: movq (%rsi), %rdi0x1000011fd: movq %rdi, -64(%rbp)0x100001201: movq %rsi, %rdi0x100001204: movq -64(%rbp), %rsi0x100001208: movq %rax, -72(%rbp)0x10000120c: callq *16(%rsi)0x10000120f: movq -24(%rbp), %rsi0x100001213: cmpq $0, %rsi0x10000121a: movl %eax, -76(%rbp)0x10000121d: movq %rsi, -88(%rbp)0x100001221: je 0x100001234 ; main + 148 at main.cpp:350x100001227: movq -88(%rbp), %rax0x10000122b: movq (%rax), %rcx0x10000122e: movq %rax, %rdi0x100001231: callq *8(%rcx)0x100001234: movl $0, %eax0x100001239: addq $96, %rsp0x10000123d: popq %rbp0x10000123e: ret 0x10000123f: movl %edx, %ecx0x100001241: movq %rax, -32(%rbp)0x100001245: movl %ecx, -36(%rbp)0x100001248: movq -48(%rbp), %rdi0x10000124c: callq 0x100001ba6 ; symbol stub for: operator delete(void*)0x100001251: movq -32(%rbp), %rdi0x100001255: callq 0x100001bbe ; symbol stub for: _Unwind_Resume