打印
[其他ST产品]

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

[复制链接]
509|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软件的版本差异或特定设置导致的

使用特权

评论回复
5
elephant00| | 2024-8-27 13:22 | 只看该作者
更新Keil软件到最新版本,看看是否解决了问题。

使用特权

评论回复
6
烟雨蒙蒙520| | 2024-8-28 12:17 | 只看该作者
这意味着多字节数据在内存中的存储方式是从低字节到高字节顺序存放的。

使用特权

评论回复
7
江河千里| | 2024-10-5 21:10 | 只看该作者
在Keil中,Memory窗口和反汇编窗口显示的数据格式可能会有所不同,这主要是因为它们处理数据的方式不同。

使用特权

评论回复
8
夜阑风雨| | 2024-10-5 21:18 | 只看该作者
在反汇编窗口中,指令通常是32位对齐的,而Memory窗口中的数据可能不是对齐的。这可能导致它们显示的数据不一致

使用特权

评论回复
9
三生万物| | 2024-10-6 02:00 | 只看该作者
STM32是小端模式(Little-Endian),这意味着在内存中,数据的低位字节存储在低地址,高位字节存储在高地址。

使用特权

评论回复
10
光辉梦境| | 2024-10-6 03:00 | 只看该作者
Memory窗口直接显示内存中的数据,按照小端模式显示

使用特权

评论回复
11
暖了夏天蓝了海| | 2024-10-6 04:00 | 只看该作者
反汇编窗口显示的是指令的机器码,这些机器码通常是按照字节顺序显示的

使用特权

评论回复
12
淡漠安然| | 2024-10-6 05:00 | 只看该作者
其实Memory窗口和反汇编窗口对数据的解释方式不同。Memory窗口直接显示内存中的字节数据,而反汇编窗口显示的是指令的机器码。因此,即使它们显示的数据相同,解释方式也可能不同

使用特权

评论回复
13
一秒落纱| | 2024-10-6 06:00 | 只看该作者
一般Memory窗口通常以字节为单位显示数据,而反汇编窗口以指令为单位显示数据。这可能导致它们显示的数据格式不同

使用特权

评论回复
14
夜阑风雨| | 2024-10-6 07:00 | 只看该作者
在反汇编窗口中,指令通常是32位对齐的,而Memory窗口中的数据可能不是对齐的。这可能导致它们显示的数据不一致

使用特权

评论回复
15
远山寻你| | 2024-10-6 08:00 | 只看该作者
虽然它们显示的数据不同,但它们都是正确的。Memory窗口显示的是内存中的字节数据,而反汇编窗口显示的是指令的机器码

使用特权

评论回复
16
别乱了阵脚| | 2024-10-6 09:00 | 只看该作者
Memory窗口和反汇编窗口显示的数据不一致是正常的,因为它们处理数据的方式不同

使用特权

评论回复
17
冰春彩落下| | 2024-10-6 10:00 | 只看该作者
一般来说,Memory窗口直接显示内存中的字节数据,而反汇编窗口显示的是指令的机器码。理解这一点可以帮助你更好地调试和分析代码

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

558

主题

2431

帖子

4

粉丝