C++反汇编
约 309 字大约 1 分钟
2025-02-28
写这篇博客目的是为了在最短时间内复习忘记的知识点
基本数据结构
字符与字符串
字符编码
编码 | 占字节数 | 表示范围 |
---|---|---|
ASCII | 1字节 | 0-255(0xFF) |
Unicode | 2字节 | 0-65535(0xFFFF) |
通常 char定义ASCII格式字符 wchar_t定义Unicode格式字符
使用wchar_t保存ASCII编码字符时不足位补0
字符存储方式
- 保存总长度
- 使用结束符
C++使用结束符'\0'保存字符串 ASCII使用一个字节'\0' Unicode使用两个字节'\0'
bool类型
占1字节 基本可以任何类型替代,出现在真假判断处
C++指针
C++引用
#include <stdio.h>
void add(int &ref){
ref++;
}
int main(int argc, char* argv[]) {
int n = 0x12345678;
int &ref = n;
add(ref);
return 0;
}
//x86_vs对应汇编代码讲解
00401020 push ebp
00401021 mov ebp, esp
00401023 sub esp, 8
00401026 mov dword ptr [ebp-4], 12345678h;n=0x12345678
0040102D lea eax, [ebp-4] ;eax=&n
00401030 mov [ebp-8], eax ;[ebp-8]存放n的地址,int& ref = n
00401033 mov ecx, [ebp-8]
00401036 push ecx ;参数1传递n的地址
00401037 call sub_401000 ;调用add函数
0040103C add esp, 4 ;平衡栈
0040103F xor eax, eax
00401041 mov esp, ebp
00401043 pop ebp
00401044 retn