为了能看懂反汇编,特意跑去学习了王爽的汇编语言,书的实验基本都能完成,
结果学完了还看不懂
比如:
0000000000400526 <main>:
400526: 55 push %rbp
400527: 48 89 e5 mov %rsp,%rbp
40052a: 48 83 ec 10 sub $0x10,%rsp
40052e: 48 c7 45 f8 00 00 00 movq $0x0,-0x8(%rbp)
400535: 00
400536: 48 8b 45 f8 mov -0x8(%rbp),%rax
40053a: 48 89 c7 mov %rax,%rdi
40053d: e8 07 00 00 00 callq 400549 <sub1>
400542: b8 00 00 00 00 mov $0x0,%eax
400547: c9 leaveq
400548: c3 retq
1. 指令 callq, leaveq retq 这个后面加个q表示什么意思?
2. sub $0x10,%rsp 这里0x10是怎么来的?
3. movq $0x0,-0x8(%rbp) -0x8 这里表示什么?
4. rbp, rax, 等寄存器是在64位系统下面的吗?
我知道这是AT&T汇编, 与masm 的有些区别,不过关于AT&T汇编的书籍感觉特别少,现有的书籍感觉都有比较好的书推荐吗?
我的目的只是能阅读反汇编代码就可以, 我下一步该如何做?