簡體   English   中英

預測分支

[英]Predicting branches

假定處理器具有使編譯器將初始預測狀態指定為分支指令的LT或LNT的功能。 考慮以下形式的聲明

如果A> B那么A = A + 1 ELSE B = B + 1

(a)為上述語句生成匯編語言代碼。

(b)在沒有其他信息的情況下,討論編譯器應如何在匯編代碼中為分支指令指定初始預測狀態。

(c)對包含上述語句的程序的執行行為的研究表明,變量A的值通常大於變量B的值。如果此信息可供編譯器使用,請討論它如何影響初始值。分支指令的預測狀態。

我想我有a和b部分。 對於a部分,不是這樣的:

假設R0包含A中的值,R1包含B中的值。

       Branch_if_R0>R1   LOOP            //Compares A and B
       Add               R1, R1, #1      //A>B is false so B=B+1
LOOP   Add               R0, R0, #1      //A>B is true so A=A+1

至於b部分,由於循環條件在循環的開始,所以這不是LNT嗎? 對於c部分,如果我們知道A通常大於B,那么這不是LT嗎?

您的代碼有錯誤。

 IF A > B THEN A = A + 1 ELSE B = B + 1

匯編語言

       cmp               R0, R1
       jg                LOOP             //Compares A and B
       Add               R1, R1, #1      //A>B is false so B=B+1
       jmp               LOOP1
LOOP:  Add               R0, R0, #1      //A>B is true so A=A+1
LOOP1:

暫無
暫無

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

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