不同编译版本在64位操作系统下对寄存器的优化

以下代码在64位系统resease和debug版本中,a和c的地址差是不一样的因为会被优化,一个int在64位操作系统下占4个字节
32系统调用函数是通过栈来传递参数的,a,b,c放在函数的栈中,打印栈的地址。在64位系统中函数传递参数绝大多数不是栈是通过寄存器传输的减少栈的使用,所以64位系统速度快可使用的寄存器数变大。
不打印b的地址根本不会和函数的寄存器发生作用,需要打印地址才会在寄存器中预留空间,在debug会a,b,c都预留了而发布版本只预留了a和c

在这里插入图片描述
在这里插入图片描述

发布了158 篇原创文章 · 获赞 43 · 访问量 7689

猜你喜欢

转载自blog.csdn.net/qq_39885372/article/details/104116358