Insight调试器在寄存器中显示错误的值

时间:2016-11-17 04:30:27

标签: assembly nasm insight

我在64位Mac-to-Linux计算机上使用Insight调试器。

它告诉我,mov ebx, 1739的结果是EBX中的0xcc00cccb。 EAX按预期获得0x1bf,但乘法结果也很奇怪(当它应该适合32位寄存器时)。

global  _start          

_start:

nop     

    mov eax, 447
    mov ebx, 1739
    mul ebx

nop 

请有人告诉我发生了什么事。我甚至无法声明一个databyte字符串,如果它没有像在任何mov或mul指令生成的任何十六进制处将高阶半字节的几个c添加到最先声明的寄存器那样。我使用NASM汇编程序。

编辑:我收集和链接的两个终端条目是:

nasm -f elf -g -F stabs test.asm -l test.lst
ld -o test test.o -melf_i386

1 个答案:

答案 0 :(得分:0)

对于任何可能正在运行Ubuntu 16.04 LTS的人来说,如果你试图“回来”#34;通过博客文章中建议的方法从此Ubuntu的默认应用程序集中删除的Insight: http://www.dalfonso.co/blog/2016/04/23/setting-insight-debugger-on-ubuntu-16-04-lts/,你实际上不会得到你希望的应用程序。它缺少了部分。

在表面(界面)上,这似乎可行,但它可能只是做拼凑而不能完全重新生成应用程序。

真正的原因与我的计算机内部故障无关,由于未知原因,如果保存程序集文件的文件夹名称被命名为"程序集&#,则无法正确地将值分配给寄存器34 ;.