C++继承对应的汇编代码
2012-12-25 19:59
441 查看
// // 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 %rbp 0x1000011a1: movq %rsp, %rbp 0x1000011a4: subq $96, %rsp 0x1000011a8: movl $0, -4(%rbp) 0x1000011af: movl %edi, -8(%rbp) 0x1000011b2: movq %rsi, -16(%rbp) 0x1000011b6: movl $16, %edi 0x1000011bb: callq 0x100001bac ; symbol stub for: operator new(unsigned long) 0x1000011c0: movq %rax, %rsi 0x1000011c3: movq %rax, %rdi 0x1000011c6: movq %rdi, -48(%rbp) 0x1000011ca: movq %rax, %rdi 0x1000011cd: movq %rsi, -56(%rbp) 0x1000011d1: callq 0x100001260 ; derived::derived() at main.cpp:22 0x1000011d6: jmpq 0x1000011db ; main + 59 at main.cpp:32 0x1000011db: movq 3670(%rip), %rdi ; (void *)0x00007fff73f26910: std::__1::cout 0x1000011e2: leaq 2835(%rip), %rsi ; "Hello, World!\n" 0x1000011e9: movq -56(%rbp), %rax 0x1000011ed: 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), %rsi 0x1000011fa: movq (%rsi), %rdi 0x1000011fd: movq %rdi, -64(%rbp) 0x100001201: movq %rsi, %rdi 0x100001204: movq -64(%rbp), %rsi 0x100001208: movq %rax, -72(%rbp) 0x10000120c: callq *16(%rsi) 0x10000120f: movq -24(%rbp), %rsi 0x100001213: cmpq $0, %rsi 0x10000121a: movl %eax, -76(%rbp) 0x10000121d: movq %rsi, -88(%rbp) 0x100001221: je 0x100001234 ; main + 148 at main.cpp:35 0x100001227: movq -88(%rbp), %rax 0x10000122b: movq (%rax), %rcx 0x10000122e: movq %rax, %rdi 0x100001231: callq *8(%rcx) 0x100001234: movl $0, %eax 0x100001239: addq $96, %rsp 0x10000123d: popq %rbp 0x10000123e: ret 0x10000123f: movl %edx, %ecx 0x100001241: movq %rax, -32(%rbp) 0x100001245: movl %ecx, -36(%rbp) 0x100001248: movq -48(%rbp), %rdi 0x10000124c: callq 0x100001ba6 ; symbol stub for: operator delete(void*) 0x100001251: movq -32(%rbp), %rdi 0x100001255: callq 0x100001bbe ; symbol stub for: _Unwind_Resume
相关文章推荐
- C++普通函数对应的汇编代码
- 在VC++6.0中查看C/C++对应的汇编代码方法
- 在Android源码中查找Java代码中native函数对应的C++实现
- struct使用继承c++代码实例及运行结果
- 学习C++反汇编-单继承
- 共有继承,保护继承,私有继承的区别c++代码实例
- 一个C++继承、虚函数和多态性的实例代码
- struct使用继承c++代码实例及运行结果
- 共有继承,保护继承,私有继承的区别c++代码实例
- C++中的引用与指针 汇编代码
- 用gcc查看c源文件的汇编代码 C++性能优化技术导论
- 浅谈Android Studio如何Debug对应so文件C/C++代码
- VC6.0和VS2005查看查看C或者C++文件汇编代码的方法
- C++中常用代码在C#中的对应(持续更新)
- 详解C++代码反汇编后的堆栈寄存器EBP和ESP
- 详解C++代码反汇编后的堆栈寄存器EBP和ESP
- Visual Studio 2008 下生成C/C++ 汇编代码
- struct使用继承c++代码实例及运行结果
- C++多继承代码理解
- 通过汇编代码分析C++的动态联编机制