补充一点,18楼的图中程序的36行出现的0x6E0,rom在此处存储码表编码的指针,举个栗子,在圣魔中是
0x08147DD4,我们来看看这个位置到底存了什么:

看到这么多的FF你应该也会和我一样联想到上文中出现的FFFFC290,
再对比一下这两张图,你是不是感觉自己发现了什么?


还有48到57行,再看一下16楼,提到了0x0014d088处又存储了另外一个重要的指针——字符频率结尾的指针,这个指针就是r4的初始值,圣魔中是0x0014d084,内圈循环的第一次用的就是这个值,例如先假设r2 & 0x1 不是0,就会在(r4 + 2 = 0x0014d086)处读取值存入r6,此时r6 = 0x14AB,
r4 = r5 + (r6 << 2) 就是 r4=r5+r6*4,而这里的r5是码表编码的指针(首地址),然后再在得到的新地址r4处取新的r6,是负数的话就说明找到的是码表编码,不是负数的话就再接着内循环,如果是0的话(上图中的0000ffff转置后就是0了),就作为结束符。退出两层循环。