编译代码时是否有任何算法或编译器将源代码完全转换为生成的代码?
答案 0 :(得分:0)
你已经说过两个完全不同的问题,我会尝试一次回答一个问题。首先,关于为什么在编译时没有从源代码到目标代码的唯一转换的问题。这是因为对于大多数计算机语言而言,与自然语言一样,通常有许多方式来表达相同的想法或算法,并且与自然语言类似,您可以根据上下文选择措辞。因此,在编译时,您可以通过选择在目标代码应该工作的上下文中最有效的单词来获取源代码并将其转换为目标代码。如果您的程序必须快速,则选择快速的目标构造,如果您的程序必须在内存受限的环境中工作,您可以选择紧凑的目标构造。
第二个问题的答案,即如果有任何编译器将源代码完全转换为目标代码,那就是所有编译器都要做的事情,如果它们失败,这是由于错误。为了概括一点,这意味着对于简单程序,所有编译器都会将源转换为等效的目标代码,而在使用源语言的更复杂部分的代码上它们可能会失败。