在32位系统中,long long类型为8个字节,int为4个字节,除了表面上看各自存储的数据大小不同,还有什么不同呢?
movl 12(%edp),%eax
假设一个函数,它的形参类型为long long如下:
test(long long a)获取形参a的汇编指令如下:
movl 8(%edp),%ebxmovl 12(%edp),%eax
这两条汇编指令就是获取形参a的值,movl 8(%edp),%ebx 指令把a的低32位存入%ebx中,movl 12(%edp),%eax 指令高32位存入%eax中
下面我们来接着看看类型为int的形参情况
test(int a)
movl 8(%edp),%ebx
获取形参a的值拷贝只需要一条汇编指令,所以在32位系统中使用int型性能比long long好,在能使用int类型的情况下就不要使用long long 除非数据大到必须使用long long