了解汇编程序的工具?

时间:2010-02-24 17:33:15

标签: assembly editor

我有一个汇编程序,我试着理解它。 (我实际上是在描述它)。 是否有一个Linux工具/编辑器可以为我构建一点点? 显示循环/跳转的位置就足够了。 方便地描述教学的内容会很棒。

6 个答案:

答案 0 :(得分:3)

如果您寻找类似于OllyDbg但针对Linux的内容,您可以尝试edb

答案 1 :(得分:1)

由于您真的正在翻转高级语言进行性能分析,因此您可以做一些事情来帮助完成此过程。首先在C ++编译器和链接器中启用并保留调试信息(不要让它strip可执行文件)。在g ++中,-g命令行标志执行此操作。第二个许多C ++编译器具有输出立即汇编源代码的标志,而不是发出目标代码(由链接器使用)。在g ++中,-S标志启用此功能。

可以将编译器中的程序集与oprofile反汇编中的程序集进行比较。

我对反编译器不是很熟悉,但是包含another SO post的两个反编译器对于C而言是BoomerangREC,而不是C ++。

我希望有所帮助。

答案 2 :(得分:0)

你可以使用Asm plugin for Eclipse

但是,通常IDE不用于汇编编程。我不确定通过轻松发现跳跃和循环的位置你会获得多少理解 - 无论如何你必须阅读所有内容。

答案 3 :(得分:0)

看看这个......

http://sourceforge.net/projects/asmplugin/

这是Eclipse的插件......

答案 4 :(得分:0)

不是真的,但你可以随时查看指令引用,使用语法高亮(vim asm语法),如果没有运行限制,你可以通过调试器。对于已经汇编的代码,这可能很有趣:LIDA

答案 5 :(得分:0)

仅适用于PowerPC CPU 项目Demono旨在恢复二进制代码的算法(目前仅用于PPC) - 并且它不是完全反编译器。项目正在建设中,但有些例子是有效的。 站点具有在线服务,用于从assebler生成类似C的函数描述: online service for decompile PPC asm

要使用它,您应该执行以下步骤:

  1. 将二进制代码(对于PowerPC)反汇编为汇编程序文本(由IDA提供)
  2. 将置备者的文本插入字段“Ассемблер”
  3. 按“Восстановить”按钮
  4. 期待形成“Восстановленныйалгоритм”
  5. 例如,如果汇编程序有文本:

    funct(){
      0x00000002:  cmpw r3, r4    
      0x00000003:  ble label_1    
      0x00000004:  mr r6, r3      
      0x00000005:  b label_2      
      0x00000006:  label_1:       
      0x00000007:  mr r6, r4      
      0x00000008:  label_2:       
      0x00000009:  cmpw r6, r5    
      0x0000000A:  ble label_3    
      0x0000000B:  mr r7, r6      
      0x0000000C:  b label_4      
      0x0000000D:  label_3:       
      0x0000000E:  mr r7, r5      
      0x0000000F:  label_4:       
      0x00000010:  mr r3, r7      
      0x00000011:  blr            
    }
    

    在线服务恢复遵循功能的算法描述:

    funct(arg_w_0, arg_w_1, arg_w_2){
      if(arg_w_0>arg_w_1?true?false){
        arg_w_0=arg_w_1;
      }else{
      }
      if(arg_w_0>arg_w_2?true?false){
        arg_w_0=arg_w_2;
      }else{
      }
      return (arg_w_0);
    }
    

    因此,funct()派生最多三个数字 - max3()。

    可能,此服务可帮助您了解汇编程序指令的工作原理。

相关问题