簡體   English   中英

使用有限的可用寄存器生成目標代碼

[英]Target Code Generation using limited available registers

將以下代碼翻譯成機器代碼,並在生成指令時顯示寄存器和地址描述符。 (假設有兩個寄存器可用:R0 和 R1。)

D : = B - C 
E : = A - B 
B : = B + C 
A : = E - D

我試過這樣的事情:

MOV B,R0
SUB C,R0  
MOV A,R1
SUB B,R1

-- R0 包含 D -- R1 包含 E

我不能從這里開始。 由於 B 在塊中沒有下一個用途(從第 3 行開始),下面的代碼會怎樣?

根據您的嘗試,假設有關處理器的一些基礎知識:

你有D:= B - C幾乎完成——只需將結果存儲到D中即可完成。

MOV B,R0
SUB C,R0
MOV R0,D

現在所有寄存器都再次可用(盡管如果您碰巧立即再次需要D ,則副本在R0中 — 但是,考慮到有限的寄存器和其他要完成的計算,這很難利用)。

我怎么知道可以移動到內存? 我沒有,但基於有根據的猜測,擁有mov A,R0而不是mov R0,A會很奇怪。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM