同人星球BBS -> 游戏修改 -> [修改资料]32位与游戏 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

修改众 08-05-20 16:46

===========知识点1:32位
大家知道,现在的游戏数据多是4byte的内存长度
4byte也叫做 "Double Word","双字"

现在的CPU多是32位,这个32位是这么来的
cpu处理的实际是2进制的数据,1个2进制的0或者1,用bit来表示
1byte=8bit  (注意发音很接近,所以很容易搞错
4byte=32bit
cpu处理数据依赖其中的寄存器,eax,ebx,ecx等等
寄存器的存储长度决定了cpu处理数据的单位
32位cpu的寄存器所容纳的数据长度是32位
所以叫做32位cpu,对应的操作系统叫做32位操作系统。

游戏采用4byte的内存地址,32位cpu可以最高效率的处理数据
这样游戏可以最大限度的提高运行速度。

(实际上就算数据不是32位,cpu在运算的时候也会将数据转换为32位
比如1个2byte=16bit的数据,cpu在运算的时候会把它扩展为32位的数据,只是前16位都用0来表示。
所以32位cpu可以处理小于32长度的数据,兼容以前的程序。
但却不能兼容超过32位的数据。64位系统用的程序就不能在32位cpu上运行。

==========知识点2: bit运算
知道了cpu的运算规则,就不难理解游戏的运算规则。
某个精神状态的有无,只要用1个bit来表示就足够了。
例如机战R中,最低4bit分别表示 不直集饶 的有无。
有就是1,无就是0
这样,如果同时有这4个精神状态,就是1111(2进制
转换为16进制就是F,内存查看器中显示的就是16进制的这个值

机战R用32byte来存放精神状态的值。
所以最多同时可以有32种精神状态。
然后只需要检查对应bit是否为1,就知道那种精神状态有没有。

汇编中有and,or,xor这些逻辑运算命令,用来计算bit的值。


进制转换
  十进制 十六进制 二进制
      0      0      0000
      1      1      0001
      2      2      0010
      3      3      0011
      4      4      0100
      5      5      0101
      6      6      0110
      7      7      0111
      8      8      1000
      9      9      1001
      10    A      1010
      11    B      1011
      12    C      1100
      13    D      1101
      14    E      1110
      15    F      1111


查看完整版本: [-- [修改资料]32位与游戏 --] [-- top --]

Powered by PHPWind v5.3 Code © 2003-05 PHPWind
Time 0.045586 second(s),query:3 Gzip enabled

You can contact us