so文件的原理概述
so涉及thumb指令,可以用恰当方式打开为高级语言。
其中涉及内存的运行原理,可以简单理解为军团数据作为一个值通过一个函数_ZN14CEntityCountry15FindCountryByIDEPKc被输入到了一个寄存器中,需要使用的时候再从寄存器中取出。
占领事件不受btl控制的原因在于该函数并没有调用存储在寄存器中的军团数据,即_ZN14CEntityCountry15FindCountryByIDEPKc缺席。但是它有一个额外的操作来判断地块归属。地块归属的判定逻辑是:另一个函数Occupybyarmy将判断行动前后地块上单位军团的归属,如果相异则修改寄存器R4,而地块的原主的数据则存储在R5中。现在再回头看这段函数,对于占领事件,加士气效果对R4生效,即对新主人、占领方生效;而减士气效果对R5生效,即对原主人、被占领方生效。
击杀事件即使不输入军团数据也能执行的原因,在于它有一个多余流程(黄框),即在军团数据为空的时候仍然可以按照 被击杀单位所属的军团 执行并生效。
回合触发事件则没有上述流程,所以当军团值为0时,不会对士气做出改变


