反汇编
hhhnoone
nobody
展开
-
编译器优化
常量折叠a=1+2 ;由于结果可预见,编译器直接生成a=3常量传播a=1;若后续代码没有更改a,则编译器将a直接用其值1代替减少变量x=i2y=j2if(x>y){ …}/*对于x和y的比较,可以转换成if(I>j)*/复写传播类似于常量长传,不过传播的...原创 2019-11-29 22:06:14 · 148 阅读 · 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 · 3255 阅读 · 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 · 334 阅读 · 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 · 238 阅读 · 0 评论 -
C++堆对象数组反汇编
源代码:堆对象数组重要知识点:1、堆空间首地址为对象数组的个数2、析构函数存在一个标志参数(位0值为1表示释放一个对象,位1值为1表示释放一组对象,分别对应于汇编代码中的push 1和push 3);3、执行构造函数和析构函数,都由构造代理函数和析构代理函数来处理。源代码对应反汇编代码构造代理函数反汇编析构函数预处理反编译析构代理函数反汇编...原创 2019-11-11 20:24:20 · 162 阅读 · 0 评论