1. 什么是引用(Reference)?引用对比指针有什么优势?
- 引用:① 引用就是变量的别名 ② 定义的时候就必须初始化,一旦指向了某个变量,就不可以再改变指向
- 优势:引用比指针更加安全
2. 请问下面代码的输出结果是什么?引用的本质是什么?
int age = 10;
int *p = &age;
*p = 30;
int &ref = age;
ref = 40;
cout << sizeof(&age) << endl;
cout << sizeof(&ref) << endl;
cout << sizeof(p) << endl;
- 结果:在 64bit 操作系统中,都打印 8 字节
- 本质:引用的本质就是指针,是弱化功能之后的指针(换句话可以说引用是编译器特性)
3. 如何从汇编的角度来验证引用的本质就是指针?
可以发现,下面的汇编完全一致

4. 对汇编的大框架认知,主流的汇编有哪几种?
- 8086汇编(16bit)、x86汇编 (32bit)、x64汇编(64bit)、ARM汇编(嵌入式、移动设备)
- x64 汇编根据编译器不同,有两种书写格式:intel、AT&T
- 汇编言语不区分大小写
5. 学习汇编言语主要学习的是哪两个东西?CPU 经常在内存和寄存器之间
做的事情是什么?
- 主要学习:汇编指令集、寄存器
- CPU 经常做的事情是把
内存中的数据读到寄存器
,再将寄存器中的数据存储到内存
。(CPU 不能直接对内存和内存
进行操作)
6. 寄存器既然也是存东西的,那么一个寄存器占多少字节呢?rax 和 eax 这两个寄存器有什么区别?
- 寄存器的大小和 CPU 的位数有关系,在 64 位操作系统下,寄存器占 8 字节。
rax
和 eax
是同一个寄存器
- 一般规律:① r 开头的寄存器是 64bit 的,占 8 个字节 ② e 开头的寄存器是 32bit 的,占 4 个字节。
7. 什么是常引用?(暂时记录吧)

8. 不同的高级语言转成的汇编是一样的吗?
- 高级语言最终转成的汇编,取决于
CPU架构
还取决于 编译器
。所以大概率都是不同的
- 但是在指定的 CPU 架构中,
汇编和机器码一一对应