c语言分析和循坏对应的汇编定义格式(Debug版本)
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;
}


注意这些与语言没有关系,这是编译原理的问题,以后看编译原理
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;
}


双分支的结构特点:jxx的目标上一行指令为jmp,而且是往高地址去的的jmp
编译原理代码优化外提

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;
}


1.识别代码定式
2.如果是do循环,则按jxx同条件还原等价高级代码
3.其余的代码还原则按相反的规则还原
while循环的代码定式(地址减量跳,两跳)

int main(int argc, char* argv[])
{
int n = 1;
int nSum = 0;
while(n<=100){
nSum = nSum + n;
n++;
}
printf("%d",nSum);
return 0;
}


关键比较是比较的是常量,常量在是可以在编译期间预知其结果。常量传播
for循环
#include "stdafx.h"
int main(int argc, char* argv[])
{
int i = 1; ;
int nSum = 0;
for(i=1; i<=100; i++)
{
nSum = nSum+ i ;
}
printf("%d\n",nSum);
return 0;
}


if和else if
#include "stdafx.h"
int main(int argc, char* argv[])
{
int nSum = 0 ;
if(argc ==1)
{
nSum = nSum+1;
}
else if(argc == 2)
{
nSum = nSum-1;
}
else if(argc == 3)
{
nSum = nSum*argc;
}
else
{
nSum = nSum / argc;
}
return 0;
}

常量传播
常量折叠
四则运算运算符难 算法逆向最难对象的简单最简单。
c语言分析和循坏对应的汇编定义格式(Debug版本)的更多相关文章
- java(5)循坏结构
一. while循环 1.循环的优点? 减少重复代码的编写:程序会更加的简洁 2.语法 while(表达式){ // 1.表达式是[循环条件],结果必须是boolean类型 //2.{}中的代码,即[ ...
- 哈工大LTP语言分析:分词、词性标注、句法分析等
1. LTP介绍和安装 LTP语言云官网 在线演示 | 语言云(语言技术平台云 LTP-Cloud) 安装LTP的python接口包 $ sudo pip install pyltp 模型文件下载 ...
- R语言分析朝阳医院数据
R语言分析朝阳医院数据 本次实践通过分析朝阳医院2016年销售数据,得出“月均消费次数”.“月均消费金额”.“客单价”.“消费趋势”等结果,并据此作出可视化图形. 一.读取数据: library(op ...
- 流程控制之while循坏
流程控制之while循坏 一.语法 循环就是一个重复的过程,我们人需要重复干一个活,人岂不是要累死啊,而且还是那么-..的枯燥乏味,向我这样要的小年轻,不骚里骚气的行吗?那岂不是白白流浪了这么多年头, ...
- python while循坏和for循坏
while循坏 while 条件: 条件成立,执行循坏体(注意,while循坏必须有结束条件,不然会进入死循坏) 简单做个演示: # -*- coding:utf-8 -*- # Author:覃振鸿 ...
- GO语言的进阶之路-Golang高级数据结构定义
GO语言的进阶之路-Golang高级数据结构定义 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 我们之前学习过Golang的基本数据类型,字符串和byte,以及rune也有所了解, ...
- for语句嵌套循坏性能的剖析
日常工作中,处理数据难免会遇到遍历,for循环可能是我们用的比较多的了.本节就来探讨下for语句嵌套循环的性能,猜想下面两个语句的性能. 语句1 ; i < ; i++){ ; j < ; ...
- 用R语言分析我的fitbit计步数据
目标:把fitbit的每日运动记录导入到R语言中进行分析,画出统计图表来 已有原始数据:fitbit2014年每日的记录电子表格文件,全部数据点此下载,示例如下: 日期 消耗卡路里数 步 距离 攀爬楼 ...
- 用R语言分析与预測员工离职
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/kMD8d5R/article/details/83542978 https://mmbiz.qpic ...
- 使用R语言分析股价波动
今天看的R语言.做个笔记. 使用R语言读取雅虎財经数据.分析微软公司(股票代码:MSFT)在2015年股价波动超过百分之十的日期. 然后通过检索新闻的方式,看看微软当天有什么新闻发生,导致股价波动. ...
随机推荐
- 开心档之MySQL ALTER命令
MySQL ALTER命令 当我们需要修改数据表名或者修改数据表字段时,就需要使用到MySQL ALTER命令. 开始本章教程前让我们先创建一张表,表名为:testalter_tbl. root@ho ...
- 密码学与网安——intro
Terminology primitive: 原语 (一种不可分割的最基础操作,跟具体的视角和情形有关) 两个时间节点 1949年(1945年):Shannon 提出完全安全性,开始现代密码学 197 ...
- SSM之简单的CRUD
文章目录 前言 项目介绍 项目代码介绍 数据库文件 源码介绍 代码展示 配置文件 业务逻辑代码 总结 前言 大家好呀,前面不是说最近在学习SSM么,可能学的不是那么深,不过刚刚开始,学完肯定需要先动手 ...
- MySQL对时间戳的格式化
时间转时间戳 select unix_timestamp('2022-02-22 22:22:22'); 时间戳转时间 select from_unixtime(1645539742); 格式化 SE ...
- 2023-03-12:mp3音频解码为pcm,代码用go语言编写,调用moonfdd/ffmpeg-go库。
2023-03-12:mp3音频解码为pcm,代码用go语言编写,调用moonfdd/ffmpeg-go库. 答案2023-03-12: 用github/moonfdd/ffmpeg-go库. 命令如 ...
- C# 实现 Linux 视频会议(源码,支持信创环境,银河麒麟,统信UOS)
信创是现阶段国家发展的重要战略之一,面对这一趋势,所有的软件应用只有支持信创国产化的基础软硬件设施,在未来才不会被淘汰.那么,如何可以使用C#来实现支持信创环境的视频会议系统吗?答案是肯定的. 本文讲 ...
- Java中synchronized的优化
本文介绍为了实现高效并发,虚拟机对 synchronized 做的一系列的锁优化措施 高效并发是从 JDK5 升级到 JDK6 后一项重要的改进项,HotSpot 虚拟机开发团队在 JDK6 这个版本 ...
- 浙大Jarvisoj [XMAN]level6 Writeup
分析代码 初始化 0x0804A2EC:保存malloc(0xC10)返回的指针 malloc(0xC10) 0 1 ... ... value note 总数:256 已使用 note 数 0 一. ...
- 云原生时代崛起的编程语言Go远程调用gRPC实战
@ 目录 概述 定义 背景 特点 四种服务方法 实战 环境配置 proto文件 简单RPC Token认证 服务器流式RPC 客户端流式RPC 双向流式RPC 概述 定义 gRPC 官网地址 http ...
- 记一次 .NET 某药材管理系统 卡死分析
一:背景 1. 讲故事 前段时间有位朋友找到我,说他们在查询报表的时候发现程序的稳定性会受到影响,但服务器的内存,CPU都是正常的,让我帮忙看下怎么回事,问了下程序的稳定性指的是什么?指的是卡死,那既 ...