拨开迷雾,寻真理

--“Anyone can cook!”

本质啊本质之一:数据类型的本质

研究一个层面的问题,往往要从更深的层面找寻答案。这就如c语言与汇编,汇编与机器指令,然而终究要有个底限,这个底限以能使我们心安理得为准,就好比公理之于数学,三大定律之于宏观物理。

 

在这里就将机器指令作为最后的底限吧,尽管再深入下去还有微指令,但那毕竟是太机器了,可以了。以下所有从c代码编译生成汇编代码用的是命令:cl xxx..c  /Fa  /Ze

 

类型的本质

 

类型这个概念,好多地方都有讲,但说实话,你真的理解吗?什么是类型?类型是一个抽象的概念还是一个真实的存在?嗯?

 

开始:

 

1.“好多相同或相似事物的综合”(辞海)。

 

2. X86机器的数据类型有 byte,word,dword,fword,tword,qword,等等。

 

3.“给内存块一个明确的名字,就象邮件上的收件人一样。 给其一个明确的数据类型,就好象说,邮件是一封信,还是一个包裹 。”

 

4. 类型就是一次可以操作的块的大小,就是一个单位,就像 克,千克,吨 一样。双字一次操作32位;字,一次操作16位;如果没有各种类型,机器只有一个单位,字节,那么当需要一个4字节大小的块时,需要4次操作,而如果有双字这个类型单位,那么只需要一次操作就可以了。

 

5. 类型,是机器层面支持的,不是软的,是硬的,有实实在在的机器码为证。

 

类型的反汇编:

W32dasm反汇编出来的东西,可以看出不同的类型,机器码不同,说明类型是机器硬件级别支持的,不是通过软件实现的,更不是一个抽象的概念。

 

Opcodes上关于mov的机器码讲的更清楚:

 

需要说明的是,一些大的类型单位,如qword 等,在mov等标准指令里是没有的,在一些特殊指令里才能用到,如浮点指令:fmul qword ptr [0067FB08]  机器码:DC0D08FB6700

 

阅读更多
文章标签: 汇编 byte 语言 x86 c
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

本质啊本质之一:数据类型的本质

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭