我很想知道某些語言在設計上是否更適合某些處理器體系結構。當我說體系結構時,我不是指ARM/PPC/MIPS,而是更多的堆棧,累加器或基於寄存器的體系結構。某些語言是否具有固有的處理器體系結構設計
例如,我可以想到Forth,這是一個堆棧體系結構。任何其他?
我很想知道某些語言在設計上是否更適合某些處理器體系結構。當我說體系結構時,我不是指ARM/PPC/MIPS,而是更多的堆棧,累加器或基於寄存器的體系結構。某些語言是否具有固有的處理器體系結構設計
例如,我可以想到Forth,這是一個堆棧體系結構。任何其他?
是的,絕對......它也是另一種方式:許多硬件體系結構都是爲了適應某些語言而設計的。
也許有很多好的例子可用。
是的,他們這樣做。例如,Occam編程語言最初專門針對Transputer體系結構。
也許這是一個有點聰明的笨蛋回答,但:
參與緊密相連架構處理器的彙編語言,所以,是的,確實存在一些語言中它是真實的。
高級語言是否表現出同樣的感覺可能更有趣。
大多數語言的目標是Von Neumann architecture,這是大多數CPU的基礎。
由Neil Butterworth提到的Occam for Transputer是一個值得注意的例外。
VHDL是基於數據流概念的另一個例外,但它不是一種編程語言,它是一種硬件描述和模擬語言。
最著名的例子是課程C
我看到Simon Peyton Jones在Google Video上的一次演講,談到了這個問題。他提到,當時人們對編寫專門用於執行特定語言的硬件很感興趣,但人們找到了解決問題的更好方法:使編譯器更加智能化。看看Haskell。 GHC從高層次結構中產生了一些可笑的快速代碼,但Haskell和x86彙編程序非常不同,因此兩者看起來彼此不相容。Java和Lisp發生了同樣的事情:Java和Lisp在現代計算機上都非常快,並且佔據了我們處理器的體面優勢,但是Java最初是爲了一個奇怪的基於棧的字節碼而編譯的,很久以前,人們構建了Lisp機器。
順便說一句,這裏是視頻。大部分與當前問題無關,但您可能會發現它很有趣,它是關於「爲什麼函數式編程很重要」以及如何簡單地進行單元測試。
http://video.google.com/videoplay?docid=-4991530385753299192&hl=en
它只有相當近期(過去十年左右的時間?)是編譯器已經足夠聰明,讓Haskell和Java的幾乎一樣快,C,儘管他們都沒有露出太多的底層架構。哎呀,GHC甚至不使用堆棧,這有多古怪呢?
+在Burroughs和Lisp上擊敗我。請注意,Algol的「按名稱調用」架構需要一個「顯示列表」(今天的「延續」和「lambda表達式」的前身),並在硬件中支持這一點。 – 2009-05-29 12:49:57
...在70年代和80年代有一段時間,它開始看起來像下一波要生成的,而不是特定於應用的機器語言(這是編譯器所做的),而是專用集成電路(ASIC)。所以有一段時間,硬件試圖成爲新的軟件。 – 2009-05-29 13:06:49