关于PA64位化对应,现在主要从三个方面进行排查:
1、用struct,union定义的变量,在引用其成员时,不是以
名标形式引用(例如struct_a.a 或 pstruct_a->a)而是以
相对地址进行参照(例如 *(struct_a+4)=1; ),这时,要
改为以名标形式引用。
2、在使用数据类型的偏移量时,不是使用sizeof()
(例如:*(a+sizeof(long)*2) = 1;),而是直接使用数据类型
的大小(例如:*(a+4*2) = 1; ),这时,要改为sizeof()。
但总的来说1、2、种类型的问题,排查时,都是搜索一行中是否
同时出现了“+-*/”运算子以及定数[0-9]。
3、有一些必须使用4Byte long型的地方,要注意此处是否会出错,
包括:有位运算的地方:按位取反(~),左移(<<),右移(>>),
按位与(&),按位或(|),按位异或(^)。
具体,先查询有无位运算:“~,<<,>>,&,|,^”
再查询改行有无long定义的变量;
如果必须使用4Byte时,将此变量改为int型。