2014-12-06 49 views

回答

4

我們從小學知道

a = b - c = b + (-c) 

,並從基本編程類,否定三三兩兩的一些補充,我們顛倒了許多,並添加一個,這樣

a = b + (~c) + 1 

這完美的工作,因爲當我們餵養加法器邏輯我們的價值觀,我們反轉第二個操作數,並反轉進位。(沒有減法邏輯你使用加法器做減法)

所以一些處理器實現選擇反轉進行。你已經在反轉東西做減法,原始執行正常減法(無需借用)的msbit是1,當存在借位時,進位是0,因此反轉執行把它稱爲「借」而不是進位(或者代替借位或借位或借位n)

哪種方法可以做到這一點,如果你有一個借位減去,那麼你需要反轉或不反轉根據您的設計選擇進行減法運算(正常無需借用)。

所以減法

a = b + (~c) + 1 

當你級聯減法(SBC),那麼如果沒有借那麼

a = b + (~c) + 1 

但是,如果有借那麼下一階段需要有一個1被移除,因此該sbc變成

a = b + (~c) 

在這種情況下,進位是零。所以從加法器邏輯的角度來看,當你做一次借用減法操作時,你自然必須倒置第二個操作數,但如果你不得不借用並且攜帶1,那麼它將攜帶0。

在SBC臂文檔說

路=路 - RM - NOT(C標誌)

因此,如果我們需要一個離開由於之前借那麼C需要成爲0否則C是1進去。

的增減基本上都在說

C標誌= NOT BorrowFrom(操作)

因此,如果我們需要借用然後借用爲true,所以C標誌是不正確的或0。如果我們不需要借用,那麼借用是假的0,而不是借用是1。因此,所有匹配,如果我們需要借入然後進入SBC C需要爲0.

所以基本上ARM似乎沒有修改加法器的執行。所以它不需要在SBC上反轉進位。