ZHCADC4A September 2011 – March 2014
对于具有双字(64 位)LDDW 和 STDW 指令的目标,更有效的方法是保存属于排列在堆栈上的偶数对的寄存器,以便可以使用一个 LDDW 读取该对。请注意,小端字节序的安全调试排序通常会放置寄存器,使得这样做是正确的;这并非完全出于巧合。但是,对于大端字节序,每个对的顺序都需要反向。在为大端字节序编译时,编译器会查找在栈上占用相同对齐的双字的寄存器对,并交换顺序。尽管排序方式与小端字节序不同,大端字节序的顺序可能因保存不同寄存器的函数而异,但这仍然被视为安全的调试顺序。即使在不支持 LDDW 或 STDW 的 C6x 目标上也会发生这种交换。
请记住,将寄存器放置在堆栈时首先参考安全调试排序;仅当偏移量可被 8 均匀整除时,给定偶数对的排序才会被交换。如果保存偏移量未对齐,那么寄存器将按原始顺序单独保存。