c语言分析和循坏对应的汇编定义格式

c语言if单分支结构所对应的汇编代码结构

#include "stdafx.h"
int main(int argc, char* argv[])
{
	if(argc > 8 )
	{
	  printf("argc > 8");
		if(argc > 50)
		{
		  printf("argc > 50");
		}
	}
	return 0;
}

c语言分析和循坏对应的汇编定义格式

c语言分析和循坏对应的汇编定义格式

注意这些与语言没有关系,这是编译原理的问题,以后看编译原理

if和else双分支的汇编结构

#include "stdafx.h"

int main(int argc, char* argv[])
{
	if(argc> 0 )
	{
	 printf("argc>0\r\n");
	}
	else
	{
	printf("argc<=0\r\n");
	}
	return 0;
}

c语言分析和循坏对应的汇编定义格式
c语言分析和循坏对应的汇编定义格式
双分支的结构特点:jxx的目标上一行指令为jmp,而且是往高地址去的的jmp

编译原理代码优化外提

c语言分析和循坏对应的汇编定义格式

do—while(效率最高,跳转的目标没有检测条件,往上跳)

#include "stdafx.h"
int main(int argc, char* argv[])
{
	int n = 1;
	int nSum = 0;

	do
	{
		nSum=nSum+n;
		n++;
	}
	while(n<=100);
	return 0;
}

c语言分析和循坏对应的汇编定义格式
c语言分析和循坏对应的汇编定义格式
1.识别代码定式
2.如果是do循环,则按jxx同条件还原等价高级代码
3.其余的代码还原则按相反的规则还原

while循环的代码定式

c语言分析和循坏对应的汇编定义格式

上一篇:关于主函数main(int argc,char *argv[])


下一篇:MT【181】横穿四象限