double和float类型变量在汇编角度怎么区分

float是占用四个字节,double是栈用8个字节的。

	float a=5;
	double b=5;
	printf("%lf",a+b);
	return 0;

 对应的汇编代码

00401028  |.  C745 FC 0000A>mov [local.1],0x40A00000
0040102F  |.  C745 F4 00000>mov [local.3],0x0
00401036  |.  C745 F8 00001>mov [local.2],0x40140000
0040103D  |.  D945 FC       fld [local.1]
00401040  |.  DC45 F4       fadd qword ptr ss:[ebp-0xC]
00401043  |.  83EC 08       sub esp,0x8
00401046  |.  DD1C24        fstp qword ptr ss:[esp]

fdd 中有一个qword ptr 意思是说你操作的是一个8个字节的数据,那么这个变量就是double的变量了。

 

posted @ 2021-10-22 10:55  eatwhat  阅读(142)  评论(0编辑  收藏  举报