我有一个局部变量 uint16_t* buf 指向 CPU1至 CPU2消息 RAM。 代码从 RAM 在 CPU2上执行。 我想将 buf[]的前两个元素解释为 uint32_t,因此我用 C 编写了:
address = *((uint32_t*)buf);
但不幸的是、我在局部变量"uint32_t address"中得到了意外结果。 我开始调试、无意中发现了一些我无法理解的意外行为。 上述代码已编译为以下汇编器指令序列:
MOVL ACC、*+XAR4[0] ;[CPU_ALU]|204|
MOVL *-SP[4]、ACC ;[CPU_ALU]|204|
但是、我会逐步运行该代码、结果很奇怪。 在我看来、第一条指令执行错误。 以下是在执行第一条指令之前的屏幕截图:

下面是"汇编步骤进入"之后的屏幕截图:

在执行第一条汇编指令后、我预计 ACC 寄存器将包含0x082000、但它包含0x20000081。 怎么可能呢?
此致、
Alex