2009-05-29 30 views
4

我很想知道某些語言在設計上是否更適合某些處理器體系結構。當我說體系結構時,我不是指ARM/PPC/MIPS,而是更多的堆棧,累加器或基於寄存器的體系結構。某些語言是否具有固有的處理器體系結構設計

例如,我可以想到Forth,這是一個堆棧體系結構。任何其他?

回答

5

是的,絕對......它也是另一種方式:許多硬件體系結構都是爲了適應某些語言而設計的。

也許有很多好的例子可用。

+0

+在Burroughs和Lisp上擊敗我。請注意,Algol的「按名稱調用」架構需要一個「顯示列表」(今天的「延續」和「lambda表達式」的前身),並在硬件中支持這一點。 – 2009-05-29 12:49:57

+0

...在70年代和80年代有一段時間,它開始看起來像下一波要生成的,而不是特定於應用的機器語言(這是編譯器所做的),而是專用集成電路(ASIC)。所以有一段時間,硬件試圖成爲新的軟件。 – 2009-05-29 13:06:49

4

是的,他們這樣做。例如,Occam編程語言最初專門針對Transputer體系結構。

2

也許這是一個有點聰明的笨蛋回答,但:

參與緊密相連架構處理器的彙編語言,所以,是的,確實存在一些語言中它是真實的。

高級語言是否表現出同樣的感覺可能更有趣。

0

大多數語言的目標是Von Neumann architecture,這是大多數CPU的基礎。

由Neil Butterworth提到的Occam for Transputer是一個值得注意的例外。

VHDL是基於數據流概念的另一個例外,但它不是一種編程語言,它是一種硬件描述和模擬語言。

0

最著名的例子是課程C

0

下寫在70年代初,以適應DEC PDP-11 例如的在PDP-7上,編程語言B只有一種數據類型,但將其移植到具有不同大小數據類型的PDP-11中,變量的數據類型已添加到該語言中。

1

我看到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甚至不使用堆棧,這有多古怪呢?

相關問題