Language agnostic 语言翻译器:汇编语言

Language agnostic 语言翻译器:汇编语言,language-agnostic,programming-languages,assembly,Language Agnostic,Programming Languages,Assembly,我只是好奇,是否有任何一种程序/应用程序可以用一种语言输入代码并将其翻译成另一种语言,如asm。这似乎是完全可能的……这样的事情存在吗?是的。它们被称为编译器 编译器只是一类称为语言翻译器的程序的一个例子 编译器将高级语言(如C++和java)转换成低级语言,包括虚拟机字节代码、汇编、C或直接进入机器可运行对象代码。 < P>这是任何编译程序的有效方式,因为汇编器只是另一种机器代码形式。我相信GCC明确地做到了这一点,您可以要求它向您展示中间汇编程序。例如,看看。这里有一个将.NET代码转换为J

我只是好奇,是否有任何一种程序/应用程序可以用一种语言输入代码并将其翻译成另一种语言,如asm。这似乎是完全可能的……这样的事情存在吗?

是的。它们被称为编译器

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


编译器将高级语言(如C++和java)转换成低级语言,包括虚拟机字节代码、汇编、C或直接进入机器可运行对象代码。

< P>这是任何编译程序的有效方式,因为汇编器只是另一种机器代码形式。我相信GCC明确地做到了这一点,您可以要求它向您展示中间汇编程序。例如,看看。

这里有一个将.NET代码转换为Java、PHP、JavaScript和ActionScript的程序。

有一些工具允许您将一种语言转换为另一种语言。基本上,有一个解析器、一个翻译器和一台打印机

解析器显然会将源代码解析为

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


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

当您说某件事情“完全可能”时,就会出现问题。一种语言的某个功能通常无法直接或轻松地转换为另一种语言;这就是为什么我们首先要为任务选择一种语言!例如,将斐波那契数从Java转换为C很简单,但转换为Haskell?当然,这仍然是可行的,但是试着转换一个程序,打开posix线程并在多个端口上侦听不同的网络流量

几乎每一段有用的代码都广泛依赖于外部库,其中许多库不是开源的。除此之外,您认为以下内容在C语言中应该翻译成什么?甚至是爪哇

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

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

method(f)

除了最简单的情况(C语言到C语言)之外,这项任务本质上比看起来更复杂。在静态类型语言和动态类型语言之间进行转换是很困难的,任何特定于语言的操作都是如此。

您可能对Haxe感兴趣,请参见。

我有一个程序可以接受任何C程序并将其转换为汇编。它叫gcc.:)Mine-javac-not:(,哈哈哈,对于C/C++程序,你可以得到汇编代码。对于.NET程序,你有IL程序集……对于Java,你可以读取字节码程序集。其他编译器也可以这样做,但没有通用工具。当编译器不提供asm列表时,你可以从最终的可执行文件中获得。我不知道这是否是真的这是不是一个聪明的回答,但我想很明显,我不是在问编译成机器代码。大多数编译器去汇编。然后他们运行汇编程序。这不是一个聪明的回答。这是编译器的定义,查一下:)我给出了一个快速的答案,然后在几分钟内就把它填好了。这些评论都是我给出的快速回答。我不想成为一个聪明的驴。如果遇到这样的问题,很抱歉。“事实上,除了GCC之外,很少有编译器会这样做。是的,HAXE可以编译成java、JavaScript、C++和PHP。但是它能允许每种语言都能被编译吗?要编译成汇编吗?