[其他ST产品] STM32是小端模式,但为什么Keil中memory窗口和反汇编窗口的32位指令不一致?

[复制链接]
1461|16
 楼主| powerantone 发表于 2024-8-27 10:38 | 显示全部楼层 |阅读模式
按照小端序,这条32位的指令,不应该被解释为0800f04f吗?为什么是f04f0800?
对于16位指令,貌似没有这个问题

两只袜子 发表于 2024-8-27 13:21 | 显示全部楼层
显示方式差异
jcky001 发表于 2024-8-27 13:21 | 显示全部楼层
在反汇编窗口中,地址通常表示指令或数据的起始位置,而指令内容则展示了机器码对应的汇编指令。这里的地址和数据是按照程序执行时的逻辑顺序排列的,并不一定直接反映数据在内存中的物理存储方式(即小端或大端)。因此,从反汇编窗口的角度来看,即使STM32是小端模式,指令的显示方式也可能与memory窗口中的存储方式不完全一致。
cr315 发表于 2024-8-27 13:22 | 显示全部楼层
可能是由于Keil软件的版本差异或特定设置导致的
elephant00 发表于 2024-8-27 13:22 | 显示全部楼层
更新Keil软件到最新版本,看看是否解决了问题。
烟雨蒙蒙520 发表于 2024-8-28 12:17 | 显示全部楼层
这意味着多字节数据在内存中的存储方式是从低字节到高字节顺序存放的。
江河千里 发表于 2024-10-5 21:10 | 显示全部楼层
在Keil中,Memory窗口和反汇编窗口显示的数据格式可能会有所不同,这主要是因为它们处理数据的方式不同。
夜阑风雨 发表于 2024-10-5 21:18 | 显示全部楼层
在反汇编窗口中,指令通常是32位对齐的,而Memory窗口中的数据可能不是对齐的。这可能导致它们显示的数据不一致

三生万物 发表于 2024-10-6 02:00 | 显示全部楼层
STM32是小端模式(Little-Endian),这意味着在内存中,数据的低位字节存储在低地址,高位字节存储在高地址。

光辉梦境 发表于 2024-10-6 03:00 | 显示全部楼层
Memory窗口直接显示内存中的数据,按照小端模式显示

暖了夏天蓝了海 发表于 2024-10-6 04:00 | 显示全部楼层
反汇编窗口显示的是指令的机器码,这些机器码通常是按照字节顺序显示的

淡漠安然 发表于 2024-10-6 05:00 | 显示全部楼层
其实Memory窗口和反汇编窗口对数据的解释方式不同。Memory窗口直接显示内存中的字节数据,而反汇编窗口显示的是指令的机器码。因此,即使它们显示的数据相同,解释方式也可能不同

一秒落纱 发表于 2024-10-6 06:00 | 显示全部楼层
一般Memory窗口通常以字节为单位显示数据,而反汇编窗口以指令为单位显示数据。这可能导致它们显示的数据格式不同

夜阑风雨 发表于 2024-10-6 07:00 | 显示全部楼层
在反汇编窗口中,指令通常是32位对齐的,而Memory窗口中的数据可能不是对齐的。这可能导致它们显示的数据不一致

远山寻你 发表于 2024-10-6 08:00 | 显示全部楼层
虽然它们显示的数据不同,但它们都是正确的。Memory窗口显示的是内存中的字节数据,而反汇编窗口显示的是指令的机器码

别乱了阵脚 发表于 2024-10-6 09:00 | 显示全部楼层
Memory窗口和反汇编窗口显示的数据不一致是正常的,因为它们处理数据的方式不同

冰春彩落下 发表于 2024-10-6 10:00 | 显示全部楼层
一般来说,Memory窗口直接显示内存中的字节数据,而反汇编窗口显示的是指令的机器码。理解这一点可以帮助你更好地调试和分析代码

您需要登录后才可以回帖 登录 | 注册

本版积分规则

679

主题

4005

帖子

4

粉丝
快速回复 在线客服 返回列表 返回顶部