查看反汇编主要的思路在于将 流程,处理,算法 区分开来。
1 函数调用
原C代码:

int sum(int, int);
int main(){
int c = sum(1, 2);
printf("c=%d", c);
return 0;
} int sum(int a, int b){
int c = a + b;
return c;
}

反汇编的函数调用主要使用bp-frame式(不懂自己去查去)的调用方式:

mmm

然后是被调用的sum:

ss

2  for循环
基本的for循环是这样的:

int sum(int b){
int c, i=0;
c = 0;
for(i=0; i<4; i++){
c += b;
}
return c;
}

然后反汇编后,for循环一般是以下的形式的:

下面看看上面的c代码反汇编后变成了什么:

3 do-while循环
例子代码为:

int sum(int b){
int c, i=0;
c = 0;
do{
c += b;
i++;
}while(i < 4);
return c;
}

do-while循环的基本结构:


然后我例子代码的反汇编为:

4 while循环|
例子代码为:

int sum(int b){
int c, i=0;
c = 0;
while(i < 4){
c += b;
}
return c;
}

while反汇编的基本结构为:


上述代码反汇编的结果为:

5 if-else分支判断
例子代码的c语言为:

int sum(int b){
int c, i=0;
c = 0;
if(i<0){
c = -1;
}else if(i<1){
c = 1;
}else if(i<3){
c = 3;
} return c;
}

if-else分支的基本结构:


然后上述代码的反汇编结果为:

6 switch-case 判断分支:

int sum(int b){
int c, i=0;
c = 0;
switch(i){
case 1:
c = -1;
break;
case 2:
c = 0;
break;
case 3:
c = 1;
break;
default:
c = 2;
}
return c;
}

反汇编结果很直接:

7 使用结构体:
结构体的例子代码:

int sum(int b){

    jack j;
pjack pj = &j; j.one = 1;
j.two = 2;
pj->one = 3;
pj->two = 4;
return pj->two;
}

结构体反汇编代码:

如何快速查看将C反汇编的代码的更多相关文章

  1. C#程序集系列02,使用记事本查看可执行程序集的IL代码

    继续上一篇"C#程序集系列01,用记事本编写C#,IL代码,用DOS命令编译程序集,运行程序",在F盘的as文件夹中已经有了若干程序集.本篇体验使用记事本查看可执行程序集的IL代码 ...

  2. 怎样使用Debussy+ModelSim快速查看前仿真波形

    引子:ModelSim是HDL仿真软件,Debussy是波形查看软件:搭配使用,相当爽.此处所谓快速查看前仿真波形仅为抛砖引玉,大家不要拘泥于此.两款软件的功能都很强大,请自行研究. 注:本篇博文的软 ...

  3. 使用threaddump-analyzer 快速查看jvm thread 状态信息

    日常开发中,我们可以需要通过thread dump 查看线程信息,比如锁,spotify 团队提供了一个web 界面,很方便 以下是简单使用,同时添加了docker 支持 添加docker 支持 cl ...

  4. sp_help 快速查看表结构、视图信息

    sp_helptext: 是MS SQL Server的一个系统存储过程,可以通过它来查看存储过程或者视图.函数源码 示例:sp_helptext viewName (viewName  即要查询的存 ...

  5. MSSql使用SQL语句快速查看表对的就说明,及表字段描述及字段类型

    --表描述 SELECT tbs.name 表名,ds.value 描述 FROM sys.extended_properties ds LEFT JOIN sysobjects tbs ON ds. ...

  6. 如何快速读懂大型C++程序代码

    要搞清楚别人的代码,首先,你要了解代码涉及的领域知识,这是最重要的,不懂领域知识,只看代码本身,不可能搞的明白.其次,你得找各种文档:需求文档(要做什么),设计文档(怎么做的),先搞清楚你即将要阅读是 ...

  7. 推荐一款非常棒的谷歌插件---快速查看HTML页面元素的CSS样式

    一.下载地址 http://chromecj.com/web-development/2015-05/456/download.html 二.简介 CssViewer是一款快速查看当前页面元素的CSS ...

  8. 快速查看SQL Server 中各表的数据量以及占用空间大小

    快速查看SQL Server 中各表的数据量以及占用空间大小. CREATE TABLE #T (NAME nvarchar(100),ROWS char(20),reserved varchar(1 ...

  9. 动手动脑之查看String.equals()方法的实现代码及解释

    动手动脑 请查看String.equals()方法的实现代码,注意学习其实现方法. 第一个是false,后三个是true. package stringtest; public class Strin ...

随机推荐

  1. devexpress 控制面板汉化方式 参考信息

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  2. C# 乘法口诀表的实现方法

    using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace 乘法运算 ...

  3. 每天进步一点--c#基础巩固,事件、委托

    要想技术有所提高,就是把有些问题真正的弄懂弄明白,我从事C#开发两年了,一直对事件委托等概念一知半解,有时候博客园上看看别的大牛的文章,看看懂了就过去了,时间长了又忘了,真正理解还是要自己动手弄些例子 ...

  4. Nginx源码结构

    上一章对Nginx的架构有了一个初步的了解.这章,为了对源码仔细的剖析,先要对Nginx的源码结构有一个了解.从宏观上把握源码模块的结构. 一.nginx源码的3个目录结构 在安装的nginx的目录下 ...

  5. SaaS应用“正益工作”发布,为大中型企业轻松构建移动门户

    6月24日,以“平台之上,应用无限”为主题的2016 AppCan移动开发者大会,在北京国际会议中心隆重举行,逾1500名移动开发者一起见证了此次大会盛况. 会上,在专家领导.技术大咖.移动开发者的共 ...

  6. AppCan移动平台开发常见问题解答

    在使用AppCan移动平台开发跨平台APP时,有开发者会遇到一些问题, 不急,跟笔者一起来聊一聊使用AppCan平台开发中常见问题的解答方法. 问1.正常是按照官网提供的4个iphone启动图尺寸来做 ...

  7. meteor icons & splash配置

    ionic resources http://ionicframework.com/docs/cli/icon-splashscreen.html 用一条指令生成ionic生需Icons & ...

  8. HTML5简略介绍

    今天要说下 HTML5特有的一个元素 canvas ,旨在让web页面上作矢量图不需要在依靠flash或是其他插件,在网页上使用canvas元素时,它会创建一块矩形区域,默认300*150,当然也是可 ...

  9. Linux下安装MySQLdb模块

    1,查看是否已安装MySQLdb模块 进入python的命令行,输入 import MySQLdb 如果没有报错,证明此模块已经安装,可以跳过以下步骤. 2,下载最新的MySQLdb安装包: wget ...

  10. [iOS]深入浅出 iOS 之多线程 NSThread

    OS 支持多个层次的多线程 编程,层次越高的抽象程度越高,使用起来也越方便,也是苹果最推荐使用的方法.     下面简要说明这三种不同范式:  Thread 是这三种范式里面相对轻量级的,但也是使用起 ...