在指令手册中关于LDW的地址对齐要求是这么说的:Word addresses must be aligned on word (two LSBs are 0) boundaries.在我的应用代码中出现的问题是,LDW指令的地址并不能保证是word对齐的,比如地址末尾是0x06,LDW指令会从0x04处读取数据,这就导致我的应用出问题了。
我想问的是能不能通过编译器的配置或者其他的设置来避免这种情况。因为对于应用来讲,是不能够时时刻刻保证地址是一定对齐的。
Andy Yin1:
LDW必须是要求地址4bytes对齐,如果不能保证,则可以用LDNW读非word对齐的地址。LDW与LDNW都有对应的c-instrinstic api函数对应,如分别对应amem4和mem4,不需要写汇编,具体查看SPRU187 compiler user guide。