Skip to content

C++反汇编

约 309 字大约 1 分钟

2025-02-28

写这篇博客目的是为了在最短时间内复习忘记的知识点

基本数据结构

字符与字符串

字符编码

编码占字节数表示范围
ASCII1字节0-255(0xFF)
Unicode2字节0-65535(0xFFFF)

通常 char定义ASCII格式字符 wchar_t定义Unicode格式字符

使用wchar_t保存ASCII编码字符时不足位补0

字符存储方式

  1. 保存总长度
  2. 使用结束符

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