這是我在書中遇到的一個RISC代碼。代碼是將10與5相乘。RISC代碼循環終止
Mov ax,0
Mov bx,10
Mov cx,5
begin : Add ax,bx
loop begin
此代碼所用的週期總數爲13個週期。我不明白循環如何終止。我們沒有爲此設置任何條件。任何人都可以請解釋它是如何解釋的。
這是我在書中遇到的一個RISC代碼。代碼是將10與5相乘。RISC代碼循環終止
Mov ax,0
Mov bx,10
Mov cx,5
begin : Add ax,bx
loop begin
此代碼所用的週期總數爲13個週期。我不明白循環如何終止。我們沒有爲此設置任何條件。任何人都可以請解釋它是如何解釋的。
最有可能的想法是,loop
指令將遞減cx
,並且如果cx
非零,則只返回到begin
。看起來這個假設的RISC是在x86上建模的,這非常有趣,因爲x86不僅是CISC,而且是積極的。
如前所述,代碼看起來像是x86彙編器,而不是RISC指令集。在x86中,loop
指令遞減CX
,如果值不爲零,則指令分支。如果你熟悉C語言它看起來有些像這樣:
int ax = 0;
int bx = 10;
int cx = 5;
do
{
ax += bx;
}while (--cx !=0);
_「這是一個RISC代碼我碰到」 _你確定嗎?它看起來很像x86彙編。請參閱[Intel軟件開發人員手冊](http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html)的第2卷,瞭解有關「loop」作品。 – Michael