fe制造吧 关注:2,846贴子:14,352
  • 4回复贴,共1

名词:指针

只看楼主收藏回复

指针英文名是:pointer
同编程语言中的指针同一个概念
指向内存的位置,
那么问题来了,为什么火纹的指针要以xx xx xx 08呢?
其实xx xx xx 08应该是这么看的
08xxxxxx,合并起来看.
那么为什么他们说是 xx xx xx 08呢,因为他们只用普通的16进制编辑器,也就是每xx编辑一个,而不是每xxxxxxxx编辑一个,
比如aa bb cc dd,合并起来就是 ddccbbaa,(中间没有空格,有空格表示4个xx,没空格表示1个xxxxxxxx)
第二,为什么是翻转过来
比如aa bb cc dd,对应位置分别0 1 2 3,
也就是,
1,当我想得到位置0的一个字节的整数(也就是xx),那么我不可能会得到dd吧,只能得到aa
2,当我想得到位置0的四个字节的整数(也就是xxxxxxxx),计算机为了方便加减乘除,所以大部分采用高低位置换,也就是高位和高位相加,低位和低位相加.
举例子:aa + aa bb cc dd,你会和哪个相加?aa? bb? cc? dd?,外加一个条件,aa是位置0,bb位置1,cc位置2,dd位置3
以上,我的情况是位置0的十位数和位置0的万位数相加,所以位置0的第一个aa只能当成十位数,第二个bb只能当成百位数,第三个cc千位数,第四个dd当成万位,
那么置换成人能看得懂的,先大后小,也就是ddccbbaa,现在大部分处理器都是这么运算(有个别处理器并不是这样来处理数字)
也就是当我想这么计算的时候


IP属地:广西1楼2015-01-09 20:18回复
    现在解答了问题1了
    问题2,为什么是08xxxxxx;
    我们来看这个图片的红色标记部分

    0x00000000:指向的是BIOS数据,也就是这个是系统自带的
    0x02000000:指向的是外部运存,简称WRAM,一个256KB字节可以使用,就相当与现在电脑的内存,存放着各种游戏数据
    0x03000000:指向的是内部运存,也是WRAM,大致上和上面一样,想深入的看相关文档,
    0x04000000:各种I/O控制,游戏控制器啥的,类似我们的电脑上的键盘,控制各种输入输出
    0x05000000:调色板,
    0x06000000:显存,类似显卡的显存,控制各种显示
    0x07000000:精灵属性
    0x08000000-0x09FFFFFF:ROM,也就是我们载入的GBA文件的地址,
    所以当导入数据时,要修改指针是,位置xxxxxxxx要加上08000000,
    而GBA的ROM位置不能超过01FFFFFF (最大ROM大小:32MB)
    ,所以,指针范围一般是08000000-09FFFFFF(08000000+01FFFFFF)
    如果用普通的十六进制修改器,(只能单个单个修改)
    就要以置换的方式修改,例子
    指针:08AABBCC
    转换:CC BB AA 08


    IP属地:广西2楼2015-01-09 20:19
    回复
      2025-07-30 00:08:10
      广告
      不感兴趣
      开通SVIP免广告
      例子:VBA模拟器的内存视图
      普通的指针14 0D 50 08

      转换后的指针08500D14


      IP属地:广西3楼2015-01-09 20:22
      回复


        IP属地:安徽4楼2015-01-10 14:14
        回复


          IP属地:福建来自手机贴吧5楼2015-01-29 16:33
          回复