2

我试图将在 Linux(fedora 9)下编写的 C 代码转换为汇编 x86 代码,但是,我在 Math.h 函数中遇到了问题。该库中的函数,如 ceil、floor、log、log10、pow 在程序集 x86 中未定义。你能帮我解决这个问题吗?

谢谢。

4

2 回答 2

3

大多数库函数不会用汇编语言定义,至少在加法运算符直接映射到ADD指令的意义上不会。如果您想在汇编中重新编写库,则必须使用处理器可用的任何功能来实现该功能。大多数库函数都需要一个单独的汇编语言子程序,而不仅仅是一个操作。解决这个问题的最简单方法是让各个库子例程独立工作,然后将它们合并到更大的程序中。

您可以编译 C 代码并检查反汇编的输出,但要注意编译器优化可能会使输出难以让人理解。

请问这个任务背后的目的是什么?由于编译器本质上是 C 到汇编语言的翻译器,因此很少需要手动执行此操作。这是作业吗?

于 2012-05-26T00:00:21.380 回答
2

找出这些函数的作用的最好方法是查看它们在 glibc 源代码中的实现。它应该给你足够清晰的洞察力。另一种方法是查看/usr/lib/中的lm.so的反汇编。

于 2012-05-25T22:39:26.373 回答