本帖最后由 batiafu 于 2021-10-9 20:22 编辑
用IAR 8.4 调试STM32单片机程序。 仿真时,设置断点后,用watch窗口观察一个函数临时变量i,watch窗口显示使用的是R8工作寄存器。 窗口中的i值为0xCC,与hdma_usart2_rx.Instance->CNDTR值(应该为0x092D)不符。如图1. 而在反汇编窗口,该语句的变量i使用的是R6工作寄存器。打开Register窗口观察R6数值,为0x092D。与程序运行情况一致。 这是什么原因呢?反汇编和仿真窗口用的变量不一致? 前几天也发现一处类似情况。 (IAR没有开启优化)
|