[英]How to develop an intuition to code in LC-3 Assembly?
我讀到了 LC-3 是如何工作的,但我一生都無法弄清楚如何在 LC-3 程序集中進行編碼。 我的目標是能夠編寫簡單的程序,例如生成斐波那契數或對數組進行排序。
有人可以指點我的資源來學習這個嗎? 我精通 Python 和 Java,所以這些問題背后的基本邏輯對我來說很清楚。
學習匯編語言有幾個方面,它是處理器機器代碼的人類可讀版本。
基本上其他語言處於邏輯級別,而機器代碼非常處於物理級別
一方面,這尤其體現在存儲概念上的差異:
因此,當我們編寫匯編語言時,我們翻譯了我們的偽代碼:具有許多生命周期有限的類型變量的邏輯代碼,部分是通過將邏輯變量映射到固定的物理資源上。 變量通常比 CPU 寄存器多,尤其是當某些寄存器具有專用用途時,例如堆棧或返回地址。
另一方面,今天的其他語言通常采用結構化編程,而在匯編語言/機器代碼中,我們有 if-goto-label。
所有結構化語句在 if-goto-label 中都有翻譯。 每個翻譯都是將結構化形式的模式轉換為 if-goto-label 形式的模式。 正確地遵循模式,您將重現偽代碼的控制流——在這里很容易走捷徑並犯令人困惑的錯誤,因此我鼓勵在這里采用有條不紊的方法。
其他語言有豐富的表達式:具有許多優先級的運算符,並且可以使用()
的復雜性。 機器代碼的指令(通常)最多需要 3 個操作數。
Function 調用、堆棧幀、參數傳遞、返回值是一個相當深的主題,function 序言和結語。
有關詳細信息,請參閱以下一些資源:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.