久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標(biāo)題: 個人理解 ARM指令集中,SBC 為什么C要取反 [打印本頁]

作者: 51黑黑黑    時間: 2016-3-4 14:24
標(biāo)題: 個人理解 ARM指令集中,SBC 為什么C要取反
需要注意的是 ,在SUBS 指令中,如果發(fā)生了借位操作 ,CPSR 寄存器中的 C 標(biāo)志位設(shè)置成 0:如果沒有發(fā)生借位操作CPSR 寄存器中的 C 標(biāo)志位設(shè)置成1。這與ADDS 令中的進(jìn)位指令正好相反 。這主要是為了適應(yīng) SBC 等指令的操作需要。
  SBC  帶位減法指令:
SBC 指令從寄存器<Rn>中減去<shifter_operand>表示的數(shù)值,再減去寄存器CPSR 中C 條件標(biāo)志位的反碼 ,并把結(jié)果保存到目標(biāo)寄存器< Rd>中 ,同時根據(jù)操作的結(jié)果更新 CPSR   中相應(yīng)的條件標(biāo)志位。
《ARM體系結(jié)構(gòu)與編程》杜春雷 P67
這個地方怎么理解??反向設(shè)置再取反碼不是扯淡嗎?
我認(rèn)為是這樣的,上邊紅色字體的這句話表述不準(zhǔn)確,SUB本身是做減法,靠的是補(bǔ)碼,也就是補(bǔ)(補(bǔ)Rn> + 補(bǔ)<shifter_operand> + X),這個X就代表是否借位。
假設(shè)發(fā)生了借位,這時候C標(biāo)注位為0,則對0取反,得到的是0xFFFF(假設(shè)是16位操作系統(tǒng),就是16個1),而0xFFFF剛好是-1的補(bǔ)碼,所以X也就是0xFFFF,也就是說在發(fā)生借位的情況下,在十進(jìn)制的世界發(fā)生的實際上就是“減一”,符合需求。
相應(yīng)的,如果沒有借位,對1取反,的到0x0000,正好是-0的補(bǔ)碼,符合需求。
===以下繼續(xù)引用:
SBC 指令和 SUBS 指令聯(lián)合使用可以實現(xiàn)兩個 64 位的操作數(shù)相減 。如果寄存器RO 和 R I 中放置’一個 64 位的源操作數(shù),其中 RO 中放置低32 位數(shù)值:寄存器R2 和R3 中放置另一個 64 位的源操作數(shù),其中 R2 中放置低32 位數(shù)值。下面的指令序列實現(xiàn)了兩個64 位操作數(shù)的減法操作 。
SUBS R4 , R0 , R2 SBC  R5, Rl , R3
需要注意的是 ,在SBCS 指令中,如果發(fā)生了借位操作,CPSR 寄存器中的 C 標(biāo)志位設(shè)置成 0:如果沒有發(fā)生借位操作,CPSR 寄存器中的 C 標(biāo)志位設(shè)置成1。這與ADDS 指令中的進(jìn)位指令正好相反 。
以上理解,請指正!






歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 99久久精品国产一区二区三区 | 天天操天天摸天天爽 | 亚洲免费在线视频 | 欧美日韩中文字幕在线 | 91在线观| 欧美成人激情视频 | 国产精品久久一区二区三区 | 亚洲国产精品99久久久久久久久 | 影音先锋欧美资源 | 国产一区二区三区亚洲 | 午夜国产一区 | 欧美精品一二三 | 久久国产精品视频观看 | 国产亚洲成av人片在线观看桃 | 中文字幕一区二区三区不卡在线 | 999www视频免费观看 | 免费一区在线 | 亚洲精品成人av久久 | 午夜激情免费 | 免费视频99 | 欧洲免费毛片 | 99视频免费播放 | www.亚洲一区二区 | 一区二区高清在线观看 | 日本久久福利 | 亚洲精品一区av在线播放 | 在线观看亚洲专区 | 青青草一区二区 | 欧美日韩成人在线 | 欧美2区 | 中文字幕国产在线 | 天久久 | 玖玖综合网 | 国产一区二区在线91 | 久久不卡视频 | 精品一区二区久久久久久久网精 | 成人精品一区亚洲午夜久久久 | 成人在线视频免费观看 | 欧美一级二级视频 | 一级免费视频 | 国产一区二区三区视频 |