反汇编
hhhnoone
nobody
展开
-
编译器优化
常量折叠 a=1+2 ;由于结果可预见,编译器直接生成a=3 常量传播 a=1;若后续代码没有更改a,则编译器将a直接用其值1代替 减少变量 x=i2 y=j2 if(x>y){ … } /* 对于x和y的比较,可以转换成if(I>j) */ 复写传播 类似于常量长传,不过传播的...原创 2019-11-29 22:06:14 · 175 阅读 · 0 评论 -
vs2019反汇编strlen
源代码 #include<stdio.h> #include<string.h> int strlenTest(char szBuffer[]); int main() { char szBuffer[20] = "hello world"; scanf("%s", &szBuffer); int len = strlen(szBuffer); printf...原创 2019-11-29 13:53:56 · 3331 阅读 · 0 评论 -
C++递归函数反汇编
源代码 #include <iostream> using namespace std; int sumRecursion(int arr[], int n){ if (n > 0) { return sumRecursion(arr, n - 1) + arr[n - 1]; } return 0; } int main() { int arr[5] = { 1,2...原创 2019-11-22 16:41:55 · 383 阅读 · 0 评论 -
C++二维数组反汇编
最近在学反汇编,发现算法也尤其重要,故又回顾了算法与数据结构,在二维数组那块碰到了规则二维数组和不规则二维数组,故而想到用反汇编的方法查看二者底层的区别。 规则二维数组 源代码:很简单的二维数组 #include<iostream> using namespace std; int main() { int arr[3][5] = { { 1,2,3,4,5 }, { 2,3,4,5...原创 2019-11-22 11:36:32 · 268 阅读 · 0 评论 -
C++堆对象数组反汇编
源代码: 堆对象数组重要知识点: 1、堆空间首地址为对象数组的个数 2、析构函数存在一个标志参数(位0值为1表示释放一个对象,位1值为1表示释放一组对象,分别对应于汇编代码中的push 1和push 3); 3、执行构造函数和析构函数,都由构造代理函数和析构代理函数来处理。 源代码对应反汇编代码 构造代理函数反汇编 析构函数预处理反编译 析构代理函数反汇编 ...原创 2019-11-11 20:24:20 · 188 阅读 · 0 评论