将已编译的内联汇编重新嵌入到C ++中

时间:2016-06-23 16:06:21

标签: c++ assembly reverse-engineering disassembly

假设我制作了一个C ++程序并对其进行了编译。现在你有它的汇编代码。 然后,如果我在asm()中使用汇编代码,它会得到完全相同的结果吗? 如果是,我们可以将它用于什么?

1 个答案:

答案 0 :(得分:1)

大多数编译器通常都有一个选项,可以生成完整的汇编列表,但是只需将生成的汇编代码插入asm(“”)就没有用。

汇编列表的使用通常是理解编译器的工作原理,以便在C / C ++中编写代码,使生成的汇编代码成为 1.及时有效。 2.记忆力经济。

如果在时间或内存中使用高级别的编译器优化,通常会生成代码 3.它的逻辑与原始的C / C ++代码略有不同 4.可能包含错误。 完整列表有助于理解原始C / C ++代码与生成的汇编代码之间的联系。

  1. 在处理器中,代码和数据的内存量有限,在生成的程序集列表中查看内存代码和数据分配的大小可能很重要。
  2. 如果实施FFT等通常要求对数据地址进行某些对齐的算法,则可能必须看到这些对齐也已完成。
  3. 作为总结,汇编列表有助于在C / C ++中工作并保持(尽可能)时间和内存效率,这些源可能在嵌入式环境中受到限制。

    稍后可以组装汇编列表以生成目标代码,通常由编译器直接完成。