警告1:我對真實的實際CPU設計一無所知。計算機如何將寄存器設置爲常量值?
警告2:我不知道「CPU指令」,「CPU操作」和「CPU功能」等術語之間的區別。也許有一個,也許沒有,但我使用這些就好像它們是同義詞。糾正我,如果我錯了。
背景:想象一下你有一個4位CPU和兩個寄存器。現在你需要加載一個常數值來註冊1!可能有幾種方法可以做到這一點:
- 指令像0SXX,其中0表示這是一個「設置寄存器X」之類的指令,以及S說哪個寄存器1的側XX應加載。
- 優點:易於操作寄存器1.只需使用兩個字節的程序存儲器即可設置恆定值。
- 缺點:消耗可能的CPU指令的HALF。對於我的4位小設備來說這是一場悲劇,但對於8位以上的計算機來說這也不算什麼。
- 純算術/逐位系列CPU功能(如AND,OR,NOT,XOR,回報率,ROL,INC。,等...)
- 優點:不需要額外的CPU實現。
- 缺點:需要更多的指令,更慢的加載常量,當然,在裝配常量之前需要多思考。
- 這些之間的東西?像清理寄存器一樣,加載??然後邏輯操作?
- 還有什麼我沒有想到的?
一般:
- 有沒有一種方式,一切正常,現代的CPU寄存器設置爲恆定值?
- 如果不是,那麼最常用的方法是什麼?
- 老的4/8位計算機有不同的方法來做到這一點嗎?
我認爲任何碰過集會的人都會知道這個問題。我非常感謝你的幫助!提前致謝。
清除一個寄存器很簡單:它自己的「xor」通常比一個move-immediate to register指令更短,它將寄存器設置爲指令中包含的值。無序執行CPU需要識別依賴鏈,以便它們可以並行執行所有獨立的事情。他們總是認爲'xor eax,eax'獨立於前一個值,所以它像'mov eax,0'一樣破壞依賴鏈。 –