数据类型说明

本文介绍了在x86-64架构中,C语言基本数据类型的对应Intel数据类型和汇编代码后缀。标准int类型为32位(双字),指针为64位(四字)。汇编代码通过后缀b/w/l/q指示字节、字、双字和四字操作。此外,讨论了浮点数的单精度和双精度表示,以及GCC汇编代码中指令后缀的使用。
摘要由CSDN通过智能技术生成

c语言之数据格式

intel用术语“字(word)”表示16位数据类型。因此称32位数为“双字(double word)”,称64位数为“四字(quad word)”。下表给出的是x86-64表示的c语言基本的数据类型。标准的int值存储为双字(32位)。指针(在此用char * 表示)存储为八字节的四字。

c声明Intel数据类型汇编代码后缀大小(字节)
char字节b1
shortw2
int双字l4
long四字q8
char *四字q8
float单精度s4
double双精度l8

浮点数主要有两种形式:单精度(4字节)值,对应c语言数据类型float:双精度(8字节)值,对应于c语言数据类型double。
如图所示,大多数GCC生成的汇编代码指令都有一个字符的后缀,表明操作数的大小。例如,数据传送指令的四个变种:movb(传送字节),movw(传送字),movl(传送双字),movq(传送四字)。后缀“ l ”用来表示双字,因为32位数被看成是“长字(long word)”。注意,汇编代码也使用后缀“ l ”来表示4字节整数和8字节双精度浮点数。这不会产生歧义,因为浮点数使用的是一组完全不同的指令和寄存器。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值