赋值过程

int a = 1;
int b = a++;

x86 反汇编:

  int a = 1;
00D06428 C7 45 F8 01 00 00 00 mov dword ptr [a],1
int b = a++;
00D0642F 8B 45 F8 mov eax,dword ptr [a]
00D06432 89 45 EC mov dword ptr [b],eax 先赋值
00D06435 8B 4D F8 mov ecx,dword ptr [a]
00D06438 83 C1 01 add ecx,1
00D0643B 89 4D F8 mov dword ptr [a],ecx 在修改

传递过程

int a = 1;
printf("%d\n", a++);

x86反汇编:

  int a = 1;
003E6428 C7 45 F8 01 00 00 00 mov dword ptr [a],1
printf("%d\n", a++);
003E642F 8B 45 F8 mov eax,dword ptr [a]
003E6432 89 85 30 FF FF FF mov dword ptr [ebp-0D0h],eax 存了旧值
003E6438 8B 4D F8 mov ecx,dword ptr [a]
003E643B 83 C1 01 add ecx,1
003E643E 89 4D F8 mov dword ptr [a],ecx a已被改变
003E6441 8B 95 30 FF FF FF mov edx,dword ptr [ebp-0D0h] 取了旧值
003E6447 52 push edx
003E6448 68 30 8C 44 00 push offset string "%d\n" (0448C30h)
003E644D E8 DE 9D FF FF call _printf (03E0230h) 调用函数
003E6452 83 C4 08 add esp,8

保存旧值,修改值,传递旧值

闲着蛋疼看下a++的过程的更多相关文章

  1. [闲的蛋疼系列]从零开始用TypeScript写React的UI组件(0)-先写一个Button??

    0.咸鱼要说的 一入前端深似海,咸鱼入海更加咸. 最近闲的蛋疼,手上年前的事也完成了7788了,借助[PG1]的话来说,我们要keep real. 咸鱼肯定不real 了,因为我们都活在梦里,所以咱们 ...

  2. 在Linux下安装PHP过程中,编译时出现错误的解决办法

    在Linux下安装PHP过程中,编译时出现configure: error: libjpeg.(a|so) not found 错误的解决办法 configure: error: libjpeg.(a ...

  3. Tomcat7.0.22在Windows下详细配置过程

    Tomcat7.0.22在Windows下详细配置过程 一.JDK1.7安装 1.下载jdk,下载地址:http://www.oracle.com/technetwork/java/javase/do ...

  4. eclipse在Ubuntu 13.04下的安装过程

    eclipse在Ubuntu 13.04下的安装过程及问题小记 一.eclipse安装过程 首先确保在安装eclipse之前已经安装好Java虚拟机 1. eclipse官网下载压缩包 下载地址:ht ...

  5. iOS下KVO使用过程中的陷阱 (转发)

    iOS下KVO使用过程中的陷阱   KVO,全称为Key-Value Observing,是iOS中的一种设计模式,用于检测对象的某些属性的实时变化情况并作出响应.网上广为流传普及的一个例子是利用KV ...

  6. FFmpeg在Linux下安装编译过程

    转载请把头部出处链接和尾部二维码一起转载,本文出自:http://blog.csdn.net/hejjunlin/article/details/52402759 今天介绍下FFmpeg在Linux下 ...

  7. step_by_step_记录deepin下curl安装过程

    记录 deepin 下 curl 安装过程 wget https://curl.haxx.se/download/curl-7.55.1.tar.gz .tar.gz cd curl-/ ./conf ...

  8. 一图看懂mybatis执行过程

    一图看懂mybatis执行过程,不再懵B了

  9. 19.CentOS7下PostgreSQL安装过程

    CentOS7下PostgreSQL安装过程 装包 sudo yum install postgresql-server postgresql-contrib 说明: 这种方式直接明了,其他方法也可以 ...

随机推荐

  1. 通过Knockd隐藏SSH,让黑客看不见你的服务器

    出品|MS08067实验室(www.ms08067.com) 本文作者:大方子(Ms08067实验室核心成员) 0X01设备信息   Ubuntu14.04:192.168.61.135   Kali ...

  2. Golang 版的ssh爆破小工具

    源码如下: package main import ( "bufio" "flag" "fmt" "golang.org/x/cr ...

  3. Centos7部署FytSoa项目至Docker——第一步:安装Docker

    FytSoa项目地址:https://gitee.com/feiyit/FytSoaCms 部署完成地址:http://82.156.127.60:8000/ 先到腾讯云申请一年的云服务器,我买的是一 ...

  4. MVC与三层架构解析学习

    概要 MVC与三层架构不是简单的相等,二者之间存在一些区别. 今天,看到一位博主总结笔记,借鉴而来,以供以后学习. 将javaweb开发中的MVC(SSM框架)与三级架构比较,来解析二者之间的关系. ...

  5. 应急响应-PDCERF模型 (转)

    目录 应急响应流程 防御模型 SDL 应急响应流程 很多人认为应急响应就是脸上被黑的机器去查查什么情况,是不是被中了botnet病毒.是不是被人中了rootkit等,是不是被挂了webshell等.应 ...

  6. Scala中使用fastJson 解析json字符串

    Scala中使用fastJson 解析json字符串 添加依赖 2.解析json字符 2.1可以通过JSON中的parseObject方法,把json字符转转换为一个JSONObject对象 2.2然 ...

  7. Centos7安装成功后,网卡配置及更改镜像地址为国内镜像

    Centos7安装成功后,网卡配置及更改镜像地址为国内镜像 一.网卡配置 二.修改网络配置 踩坑一:IPADDR 踩坑二:网关,DNS与本地不一致 重启网络服务 三.镜像修改为aliyun 四.相关知 ...

  8. Commons Collections1分析

    0x01.基础知识铺垫 接下来这个过程将涉及到几个接口和类 1.LazyMap 我们通过下⾯这⾏代码对innerMap进⾏修饰,传出的outerMap即是修饰后的Map: Map outerMap = ...

  9. Java链表(英雄增删查改)

    链表(Linked List)介绍 链表是有序的列表,但是它在内存中是存储如下 小结: 1.链表是以节点的方式来存储,是链式存储. 2.每个节点包含 data 域, next 域:指向下一个节点. 3 ...

  10. Inceptor Parse error [Error 1110] line 102,24 SQL问题

    今天遇到一个SQL跑不通的问题: 去掉cast as 去掉round 最初以为是Inceptor不兼容ORACLE语句Cast as 导致的,做的以下测试 发现都能跑通,说明Cast as语句在Inc ...