1.字符集
ASCII码与Unicode字符集
- ASCII码是一个7位编码标准,共128个字符,最高位总是0
- Unicode是ASCII码的一个扩展,其使用两个字节进行编码,因此也被称为宽字符集,在unicode中所有字符都是16位的,ASCII码在Unicode下都会被扩充为16位,高位全部填充0
字节序(大端与小端)
字节序:计算机中字节该以什么样的顺序传送
例如将:12345678h写入内存中
存放顺序 | 1000h | 1001h | 1002h | 1003h |
---|---|---|---|---|
大端 | 12h | 34h | 56h | 78h |
小端 | 78h | 56h | 34h | 12h |
2.Windows系统
Win32 API函数
windows隐藏了底层实现机制,它仅仅向用户提供API函数供用户调用
windows提供了丰富的动态调用库,这些DLL文件通常存放在\Windows\System32
中
64位windows支持32位程序:
\Windows\SysWOW64
文件夹中存放了32位的系统文件,当在64位操作系统中加载32位应用程序时,WOW64建立32位启动环境,同时将cpu切换到32位
虚拟内存
windows下每个进程都有自己的虚拟空间,对于32位进程来说,这个空间大小是4GB,但是虚拟内存并非真正的内存,进程分配的4GB空间仅仅只是地址,并没有对应到实际的物理内存当中去,实际使用过程中需要哪一页才会把这个页调入内存中
应用启动时:
- 虚拟内存管理器将应用程序代码映射到虚拟地址的某个位置,并且把当前需要的代码读入物理地址
- 如果使用DLL,DLL也会被映射到虚拟地址空间中去,但是只有在需要的时候才会被读入内存