软件工程师,不了解64位程序开发你就out了

概述

        □ 64位Windows系统下也能运行32位程序,是因为有一个WOW64子系统。它能将32位应用程序的API调用转换成对原生64位系统的调用。正是因为WOW64的存在,32位应用程序在64位系统下并不能发挥最佳的性能,反而比在32位系统下有大约2%的性能损失。如果开发的是64位应用程序,则不需要依赖WOW64运行,并可带来大约5%-15%的性能提升(5%-10%由于采用了64位架构,1%-5%由于未使用WOW64)。

        □ 32位程序的最大地址空间是4GB,64位程序的最大地址空间是可以大于4GB的。

        □ 64位程序不再区分cdecl、stdcall等各种调用方式。gcc在64位下面,不再支持__attribute((cdecl))__和__attribute((stdcall))__。

        □ 64位程序不再使用ESP,而是使用增加的几个64位寄存器,因为ESP不支持64位空间的栈。

        □ 虽然在64位Windows系统下可以运行64位和32位进程,但是64位代码和32位代码不能在相同进程上运行。你的代码要么全部是64位,要么全部是32位,要加载的库和组件也要满足这一要求。

数据类型字节长度

        32位程序和64位程序,其数据类型的字节长度并不完全一致,可参看下表。

数据类型

32位系统

64位系统

猜你喜欢

转载自blog.csdn.net/hope_wisdom/article/details/131263090