我的問題:MIPS編程語言是人爲知道的嗎?MIPS - 它很重要嗎?
我是CS學生,正在上MIPS專業的集會課。我很高興用高級語言寫作,但Mips讓我有點失望。
MIPS是我應該真正關注並試圖完全掌握它的東西嗎?它會在未來幫助我嗎?
我的問題:MIPS編程語言是人爲知道的嗎?MIPS - 它很重要嗎?
我是CS學生,正在上MIPS專業的集會課。我很高興用高級語言寫作,但Mips讓我有點失望。
MIPS是我應該真正關注並試圖完全掌握它的東西嗎?它會在未來幫助我嗎?
我在大約兩年前參加了一個組裝課,我發現自己用一種類似mips的asm語言編寫GameBoy Advance遊戲。不能說我喜歡它。
儘管我認爲了解組裝代碼的內部工作原理(從高級到低級)是很好的。我覺得這讓我更瞭解電腦的工作原理。另外,我不能拒絕在製作幾個虛擬機之後,設計我自己的彙編語言:)
MIPS派生的處理器在一個點上是世界上銷量最好的處理器,英特爾x86處理器。這是因爲他們在嵌入式市場的巨大影響力。我認爲現在基於ARM的處理器可能已經接管了這個標題,但是仍然有很多使用MIPS的嵌入式系統。
即使您從未在您的職業生涯中使用匯編編程MIPS芯片,彙編語言也可能對您有所幫助。它可以幫助您編寫更高效的高級代碼,前提是您對編譯器將發佈的內容有所瞭解。其他仍然使用的領域包括編譯器(編寫自己的),設備驅動程序和多媒體編程(其中需要MMX或SSE的代碼通常仍然由手工編寫在彙編器中)。
每種CPU類型都有不同的指令集,但是有足夠的通用性,一旦你學會了一個彙編語言(在你的情況下是MIPS),其他的應該很容易拾取。
瞭解計算機的低級別是有幫助的。例如,有些開發人員會說CPU執行某種「新對象」指令。當然沒有這樣的指令,對象的管理髮生在幾層抽象層次更高的層面上。理解這種區別是很好的,所以你可以理解爲什麼對象創建可能是昂貴的(或不是),或者爲什麼受保護的地址空間可以使系統更健壯。
當我在學校時,彙編課程使用System/360指令集在IBM大型機上進行授課。在我的職業生涯中,任何時候我都從來沒有接近過這樣一臺機器,但是知道CPU看起來是否有價值。
如今我使用MIPS處理器開發嵌入式系統。實際上,我花了大量時間鑽研MIPS彙編列表,併爲引導向量和同步原語編寫一些MIPS彙編。然而,即使你從未真正編寫過任何東西,瞭解CPU操作仍然很有價值。
「mips編程語言」我假設你的意思是MIPS彙編語言。
學習彙編語言有益於瞭解它,它可以幫助您將您編寫的代碼映射到在硬件上運行的代碼。這可以幫助向您提供更多低級別問題,例如緩存未命中,分支,無序執行以及其他您不會考慮編寫高級代碼的問題。
天氣學習MIPS程序集對您非常有用,取決於您計劃遵循的職業。就我個人而言,我認爲x86/x64(在個人電腦中很流行,如果您在PC上編寫C++或C#,直接適用),PPC(獲得流行度,用於遊戲控制檯,也暴露給RISC)或ARM(用於許多嵌入式設備如手機)可能是更好的學習選擇。
Mips似乎正在迴歸嵌入式系統。 @ [sk]給出了一個比我更好的總結,但我有一個最近的例子:
Broadcom似乎現在使Wifi卡或MIPS或ARM芯片上(我不知道哪個tho,文檔說一個,固件說另一個)。然而,在更新的芯片上,我們仍然在等待支持所有功能的linux支持,所以出於這個原因,我很高興你在學習。 (現在寫給我一些驅動程序:P)
彙編語言總是值得學習。您可能沒有被教導或看到編譯器如何將高級語言代碼轉換爲彙編代碼,但我認爲知識是瞭解彙編語言最重要的好處。令人清醒的是,許多編譯器甚至在最高優化級別上效率低下。 (大多數編譯器會根據請求轉儲彙編代碼,而不是繼續進行機器代碼和鏈接。)
也就是說,MIPS asm可能沒用,因爲現在幾乎沒有人使用MIPS。 (SGI曾經使用過,但現在他們的機器都在x86/IA-64芯片上。)如果您發現彙編語言更具吸引力,並希望進一步在彙編中工作,請學習ARM指令集。 ARM只比MIPS稍微複雜一些,而且幾乎所有的手機,智能手機和PDA現在都使用ARM芯片(由數十家制造商生產)。 iPod使用ARM,就像我認爲的Zune一樣。
MIPS是一門很好的學習彙編語言。你有足夠的通用寄存器來編寫你的程序不那麼繁瑣,它是一個RISC架構,所以你需要記憶的指令減少了。
一些不是很多人提到的主流用法是,N64,Playstation 1,Playstation 2和PSP都使用了MIPS處理器。
就你而言,我認爲MIPS被用作輔導工具。這是一個計算機科學課程,而不是給你代碼猴子工具,他們正試圖教會你在更簡單的架構如MIPS而不是x86上更容易舉例說明的廣義概念。
不要指望它進入你的「程序員的工具箱」。爲了編寫低級代碼的實際目的,您最好先學習x86彙編語言。
去年我學過MIPS。 MIPS是一種重要的語言,但不幸的是,可能你永遠不會使用MIPS。您將學習一些基礎知識,但不要浪費時間嘗試學習更多的知識,因爲與其他語言相比,MIPS中沒有多少任務。
我認爲這取決於你想在畢業後朝向CS射擊的領域。如果計算機體系結構是你想要做的,那麼在我看來,我說的是。我認爲一位優秀的軟件工程師會學習彙編語言如何工作的一般概念+繞過和轉發,以及最終如何優化代碼以實現緩存性能。 (空間局部性/時間局部性)
以下是學習組裝的3個很好的理由。
第三個原因是迄今爲止最重要的。瞭解你的硬件如何工作將大大加深你對計算機科學的理解,並反過來幫助你成爲一個更好的開發者。
我很確定N64也有一個MIPS處理器。 – Ibrahim 2009-06-26 06:13:12