【博客29】汇编看:i++,++i,i+=1,i=i+1

内容: 今天记录下i的四种自增在编译器处理完后,变成了什么样的汇编语句,然后看看它们分别是怎么工作的。

测试代码1:无引用的自增
【博客29】汇编看:i++,++i,i+=1,i=i+1_第1张图片
结果:
【博客29】汇编看:i++,++i,i+=1,i=i+1_第2张图片
分析:可以看出,当i单纯自增,不涉及赋值给其他变量的时候,编译器的处理其实是一样的,它们的汇编都是先将变量i的值拿到eax寄存器,然后对寄存器的值加1,接着写回变量i

测试代码2:有赋值给其他变量的自增
【博客29】汇编看:i++,++i,i+=1,i=i+1_第3张图片
结果:
【博客29】汇编看:i++,++i,i+=1,i=i+1_第4张图片
分析:由于这时候前置与后置自增结果是不一样的,而且处理的方式也不一样。++i是先将i本身的值拿到eac寄存器,然后对寄存器的值自增,写回值。接着将值移到ecx寄存器,然后ecx寄存器再赋值给变量b。i++则是先将值移动到eax寄存器,然后将eax寄存器的值先给变量c,接着将i的值移动到ecx寄存器,在ecx寄存器里面加1,然后再写回变量i。

大三学生一枚,文章均非抄袭或者模仿,均为原创,仅代表个人观点,如果文章有错误的地方,欢迎在下方提出,每条评论我都会去认真看并回复,同时感谢指正的前辈。

你可能感兴趣的:(c++)