飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 1443|回复: 2

[交流] 试解释基址和寻址

[复制链接]
  • TA的每日心情
    无聊
    2024-1-15 22:57
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2012-4-22 13:27:12 | 显示全部楼层 |阅读模式
    本帖最后由 zaas 于 2012-4-22 13:32 编辑

    本人不大玩游戏,也木有对游戏做啥研究。
    以下内容纯属猜测,如有不当请指正。

    假如有以下类内容:
    1. #define NAMELEN 16

    2. typedef struct Money
    3. {
    4.         char *        gold;                                //0x00
    5.         char *        silver;                                //0x04
    6. }Money;

    7. typedef struct People
    8. {
    9.         char        name[NAMELEN];            //0x00
    10.         char        teacher[NAMELEN];         //0x10
    11.         int                level;                          //0x20
    12.         int                hp;                            //0x24
    13.         int                mp;                           //0x28
    14.         int                max_hp;                    //0x2C
    15.         int                max_mp;                   //0x30
    16.         int                exp;                           //0x34
    17.         char *        max_exp;                    //0x38
    18.         Money *        money;                    //0x3C
    19. }People;

    20. typedef struct Pet
    21. {
    22.         char        name[NAMELEN];                //0x00
    23.         int                level;                                //0x10
    24.         int                hp;                                        //0x14
    25.         int                max_hp;                                //0x18
    26.         long        exp;                                //0x1C
    27.         char *        max_exp;                        //0x20
    28. }Pet;

    29. class CCharacter  
    30. {
    31. public:
    32.         People *m_people;                        //0x00
    33.         Pet *        m_pet;                                //0x04
    34.         
    35. private:
    36.         BOOL Init();
    37.         BOOL relese();
    38. public:
    39.         CCharacter();
    40.         ~CCharacter();
    41. };
    复制代码
    则我们
    1. CCharacter *ca
    复制代码
    基址即:[ca]

    如果要访问人物的银币,则地址为:
    1. ca->m_people->money->silver <==>[[[ca]+00]+0x3C]+4
    复制代码

    如果要访问PET的最大经验,则:
    1. ca->m_pet->max_exp <==>[ [ca]+0x4]+0x20
    复制代码

    如此而已。
    估计游戏框架搭好以后,基址可能会变,但寻址不会有大的改变。


    PYG19周年生日快乐!

    该用户从未签到

    发表于 2012-4-22 15:28:25 | 显示全部楼层
    为什么 基址可能会变啊?
    PYG19周年生日快乐!
  • TA的每日心情
    擦汗
    3 天前
  • 签到天数: 717 天

    [LV.9]以坛为家II

    发表于 2012-4-22 16:23:43 | 显示全部楼层
    了解下,学习!
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表