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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4631|回復: 0
打印 上一主題 下一主題
收起左側

個人理解 ARM指令集中,SBC 為什么C要取反

[復制鏈接]
跳轉到指定樓層
樓主
ID:105323 發表于 2016-3-4 14:24 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
需要注意的是 ,在SUBS 指令中,如果發生了借位操作 ,CPSR 寄存器中的 C 標志位設置成 0:如果沒有發生借位操作CPSR 寄存器中的 C 標志位設置成1。這與ADDS 令中的進位指令正好相反 。這主要是為了適應 SBC 等指令的操作需要。
  SBC  帶位減法指令:
SBC 指令從寄存器<Rn>中減去<shifter_operand>表示的數值,再減去寄存器CPSR 中C 條件標志位的反碼 ,并把結果保存到目標寄存器< Rd>中 ,同時根據操作的結果更新 CPSR   中相應的條件標志位。
《ARM體系結構與編程》杜春雷 P67
這個地方怎么理解??反向設置再取反碼不是扯淡嗎?
我認為是這樣的,上邊紅色字體的這句話表述不準確,SUB本身是做減法,靠的是補碼,也就是補(補Rn> + 補<shifter_operand> + X),這個X就代表是否借位。
假設發生了借位,這時候C標注位為0,則對0取反,得到的是0xFFFF(假設是16位操作系統,就是16個1),而0xFFFF剛好是-1的補碼,所以X也就是0xFFFF,也就是說在發生借位的情況下,在十進制的世界發生的實際上就是“減一”,符合需求。
相應的,如果沒有借位,對1取反,的到0x0000,正好是-0的補碼,符合需求。
===以下繼續引用:
SBC 指令和 SUBS 指令聯合使用可以實現兩個 64 位的操作數相減 。如果寄存器RO 和 R I 中放置’一個 64 位的源操作數,其中 RO 中放置低32 位數值:寄存器R2 和R3 中放置另一個 64 位的源操作數,其中 R2 中放置低32 位數值。下面的指令序列實現了兩個64 位操作數的減法操作 。
SUBS R4 , R0 , R2 SBC  R5, Rl , R3
需要注意的是 ,在SBCS 指令中,如果發生了借位操作,CPSR 寄存器中的 C 標志位設置成 0:如果沒有發生借位操作,CPSR 寄存器中的 C 標志位設置成1。這與ADDS 指令中的進位指令正好相反 。
以上理解,請指正!

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美视频精品 | 精精国产xxxx视频在线 | 亚洲一区二区久久 | 蜜臀久久99精品久久久久野外 | 特黄特色大片免费视频观看 | 成人精品一区二区三区四区 | 久久久久久综合 | 国产亚洲精品精品国产亚洲综合 | 亚洲国产精品91 | 欧州一区 | 欧美国产视频 | 欧美操操操 | 丝袜 亚洲 另类 欧美 综合 | 中文字幕一区二区三区精彩视频 | 欧美精品乱码久久久久久按摩 | 春色av| 色偷偷噜噜噜亚洲男人 | 国产精品成人一区二区三区 | 国产一区三区视频 | 久久成人精品视频 | 欧美一级黄色免费看 | 亚洲精品三级 | 国产一级淫片a直接免费看 免费a网站 | 四虎影音 | 亚洲免费一区二区 | 91在线观看免费视频 | 国产精品毛片在线 | 国产精品视频一区二区三区不卡 | 国产精品日日摸夜夜添夜夜av | 免费骚视频| 成人免费大片黄在线播放 | 中文字幕亚洲欧美日韩在线不卡 | 99久久精品国产一区二区三区 | 黄网站色大毛片 | 伊人久久在线 | 精品视频一区二区 | 国产情品 | 国产精品久久久久9999鸭 | 爱综合| 久久精品二区 | 久久99久久99久久 |