我对 IDA 比较陌生。最近我正在反汇编一个包含一些信号处理例程的 ARM 二进制文件。例程使用的数据表之一是浮点数组,其中一个浮点数为 -0.0(编码为 0x80000000)。当我尝试让 IDA 将其转换为浮点数时,它拒绝并仅产生“DB 0,0,0,0x80”。
问题是这个单一的“无效”条目使我无法将该区域转换为数组。相反,我必须将数组分成两半,这很尴尬。
这是一个已知的问题?即使某些元素无效,我是否可以强制创建数组?
我对 IDA 比较陌生。最近我正在反汇编一个包含一些信号处理例程的 ARM 二进制文件。例程使用的数据表之一是浮点数组,其中一个浮点数为 -0.0(编码为 0x80000000)。当我尝试让 IDA 将其转换为浮点数时,它拒绝并仅产生“DB 0,0,0,0x80”。
问题是这个单一的“无效”条目使我无法将该区域转换为数组。相反,我必须将数组分成两半,这很尴尬。
这是一个已知的问题?即使某些元素无效,我是否可以强制创建数组?
好的,我在 ARM 垃圾箱中找到了一个区域,那是
RAM0:100DE337 DCB 0
RAM0:100DE338 DCB 0
RAM0:100DE339 DCB 0
RAM0:100DE33A DCB 0x80 ; Ç
选择Edit | Operand type | Number | Floating point结果:
RAM0:100DE337 DCB 0, 0, 0, 0x80
使用Alt-D意味着我现在可以在字节、字、双字和“浮动”之上切换
把它放在上面的形式,然后转到十六进制视图,按F2编辑所有0x00,,F2并返回到汇编视图并0.0显示,然后返回十六进制并重置0x80值,再次导致上述浮点格式。
改变0x80以0x70显示1.5846e29它匹配的是什么在线浮法转换器显示为0x70000000,并在该网站0x80000000是-0.0在原来的问题。鉴于值是-0,Guntram 建议将其归零对于管理“问题”最有意义
使用版本 6.6.140605(32 位)测试