随着芯片制造商向新芯片添加新的功能、指令等,我们是否需要相应的更新版本的编译器来使用这些新的芯片指令和特性?这是否意味着编程语言也需要新的操作码、语法等来使用芯片的新功能?
发布于 2011-02-14 18:30:54
是的,新的硬件功能反映在语言扩展和新语言中。例如,查看C和C++的各种矢量扩展,它们反映了SIMD指令的可用性,以及新的派生数据并行语言,如CUDA和OpenCL。
如果硬件与其他硬件有很大的不同,它很可能需要自己不同的编程语言,参见已故的Transputers和他们的Occam语言。
发布于 2011-02-12 00:32:57
编译为机器码(而不是编译到VM)的编译器可能需要在其目标体系结构发生变化时随时进行更改(尽管理想情况下所有更改都是向后兼容的,因此添加的内容只意味着有可能进行新的优化,但旧的编译器仍然可以工作)。
编程语言不需要改变,但如果通过改变机器的功能而使所需的功能成为可能,则可能需要改变。除非,“编程语言”指的是汇编/机器语言,在这种情况下,可能应该(但不一定)添加一对一的芯片指令到汇编/机器指令。
注意所有的“可能”。除非你在汇编语言、机器码、编译器设计或编程语言设计领域工作,否则这些变化对你来说是不可见的。如果你没有,那么担心这些事情就是浪费你的时间。
https://stackoverflow.com/questions/4971475
复制相似问题