语言翻译:任何组装

时间:2009-05-19 22:35:38

标签: language-agnostic programming-languages assembly

我只是好奇是否有任何类型的程序/应用程序允许以一种语言输入代码并将其转换为另一种语言,如asm。这似乎完全可能......所以这样的事情存在吗?

6 个答案:

答案 0 :(得分:13)

是。他们被称为编译器。

编译器只是一类称为语言翻译程序的例子。

编译器将高级语言(如C ++和Java)转换为较低级别的语言,包括虚拟机字节码,汇编,C或直接转换为机器可运行的对象代码。

答案 1 :(得分:4)

它实际上是任何编译器所做的,因为汇编程序只是另一种形式的机器代码。我相信GCC会明确地这样做,并且您可以要求它向您展示中间汇编程序。例如,看看GNU Assembler

答案 2 :(得分:1)

当你说某些事情“非常可能”时会出现问题。一种语言的特征通常不会直接或轻易地转换为另一种语言;这就是我们首先为任务选择语言的原因!例如,将斐波纳契数从Java转换为C是微不足道的,但对Haskell来说呢?当然,它仍然可行,但尝试转换打开posix线程的程序,并在多个端口上侦听各种网络流量。

几乎所有有用的代码都依赖于外部库,其中许多是开源。除此之外,您认为以下哪些内容应转换为C语言? Java甚至?

def method( f ):
    G = {'a':1}
    f(G)

def f( x ):
    print( [ (key, value) for (key,value) in x.items() ] )

method(f)

除了最简单的案例(C语言到C语言)之外,这个任务本质上比看起来更复杂。静态和动态类型语言之间的关系会很粗糙,特定语言也是如此。

答案 3 :(得分:1)

您可能对Haxe感兴趣,请参阅http://haxe.org/

答案 4 :(得分:0)

这是一个将.NET代码转换为Java,PHP,JavaScript和ActionScript http://jsc.sourceforge.net/

的程序

答案 5 :(得分:0)

有些工具可以让您将一种语言翻译成另一种语言。基本上,有解析器,翻译器和打印机。

解析器显然会将源解析为AST

然后,翻译者必须将AST转换为在目标语言中有意义的结构。

最后,打印机了解后期转换后的结构并输出目标代码。