iOS逆向6基礎(chǔ)篇--狀態(tài)寄存器CPSR

CPSR

  • 在ARM64中存在一種特殊的寄存器,即CPSR--current program status register 狀態(tài)寄存器咒彤。
  • CPSR寄存器是32位
  • CPSR寄存器每一位具有專門的含義

CPSR 32位含義

CPSR 32位含義
  • CPSR高四位分別稱為NZCV,N位--Negative標志位,Z位--Z ero標志位, C位--Carry標志位, V位--OverFlow標志位陵珍。

  • NZCV均為條件碼標志位,可被某些指令執(zhí)行的算數(shù)或邏輯運算結(jié)果改變违施,并可以決定決定指令的執(zhí)行邏輯互纯。意義重大。

  • CPSR的低8位(包括I磕蒲、F留潦、T和M[4:0])稱為控制位只盹,程序無法修改,除非CPU運行于特權(quán)模式下兔院,程序才能修改控制位殖卑。

我們重點關(guān)注NZCV條件碼標志位。

NZCV條件碼標志位

  • N-- Negative標志位

相關(guān)指令運算結(jié)果為負數(shù)坊萝,則N = 1, 否則N= 0孵稽。即結(jié)果為負數(shù)的時候,Negative標志位為真十偶。

  • Z-- Zero標志位

相關(guān)指令運算結(jié)果為0菩鲜,則Z = 1, 否則Z= 0。即結(jié)果為0的時候惦积,Zero標志位為真接校。

  • C--Carry標志位

Carry標志位為進位標志位, 相關(guān)指令運算結(jié)果最高位產(chǎn)生進位則C = 1, 否則C= 0。

兩數(shù)相加荣刑,可能產(chǎn)生最高位的進位馅笙。這個最高位的進位可以保存在C標志位伦乔。
如下列指令列出的加法元算:

mov w0,#0xaaaaaaaa厉亏; w0的最高位為1
adds w0,w0,w0; 執(zhí)行后 相當(dāng)于 1010 << 1 最高位進位1 C標記 為 1
adds w0,w0,w0烈和; 執(zhí)行后 相當(dāng)于 0101 << 1 最高位進位0 C標記 為 0
adds w0,w0,w0爱只; 重復(fù)上面操作
adds w0

如果是兩個數(shù)相減,將減法轉(zhuǎn)換位加法后招刹,如果最高位有進位則C = 1, 否則C = 0;
如下列指令列出的減法元算

mov w0,#0x0;  wo = 0x0, 二進制0000
subs w0,w0,#0xff ;  w0 - 0xff = 0x00 - 0xff = 0x00 + 0xffffff01 = 0xffffff01恬试,沒有進位, C = 0
subs w0,w0,#0xff; wo - 0xff = 0xffffff01 - 0xff = 0xffffff01 + 0xffffff01, 有進位疯暑, C = 1
subs w0,w0,#0xff

在某些人的理解中训柴,把C標志位為理解為無符號運算的時候:1)加法元素,有進位妇拯,則C = 1幻馁,無進位,C = 0越锈; 2)加法運算仗嗦, 有借位, 則C = 0, 無借位甘凭, 則C = 1
我個人會把減法轉(zhuǎn)換為加法后再進行理解稀拐。

  • V--Overflow標志位

Overflow標志位為溢出標志位,相關(guān)指令運算結(jié)果超過機器表示的范圍后丹弱,稱為溢出德撬。溢出則V = 1, 無溢出則V = 0;

  • 正數(shù) + 正數(shù) 為負數(shù) 溢出 兩個操作數(shù)的最高位(即符號位)為0铲咨, 計算結(jié)果變?yōu)榱?(即負數(shù))
  • 負數(shù) + 負數(shù) 為正數(shù) 溢出 兩個操作數(shù)的最高位(即符號位)為1, 計算結(jié)果變?yōu)榱?(即正數(shù))
  • 正數(shù) + 負數(shù) 不可能溢出

注意:

  • 不是所有運算指令(進行邏輯或算術(shù)運算)都能改變狀態(tài)寄存器的蜓洪,如add不能改變狀態(tài)寄存器鸣驱,adds能改變狀態(tài)寄存器。什么指令能改變狀態(tài)寄存器應(yīng)該是CPU的指令集里決定了的蝠咆。
  • C和V溢出位的區(qū)別:C位是最高位產(chǎn)生了進位踊东,V位是符號位與兩個同為正數(shù)或同為負數(shù)的符號位不同。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末刚操,一起剝皮案震驚了整個濱河市闸翅,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌菊霜,老刑警劉巖坚冀,帶你破解...
    沈念sama閱讀 216,843評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異鉴逞,居然都是意外死亡记某,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,538評論 3 392
  • 文/潘曉璐 我一進店門构捡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來液南,“玉大人,你說我怎么就攤上這事勾徽』梗” “怎么了?”我有些...
    開封第一講書人閱讀 163,187評論 0 353
  • 文/不壞的土叔 我叫張陵喘帚,是天一觀的道長畅姊。 經(jīng)常有香客問我,道長吹由,這世上最難降的妖魔是什么若未? 我笑而不...
    開封第一講書人閱讀 58,264評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮倾鲫,結(jié)果婚禮上粗合,老公的妹妹穿的比我還像新娘。我一直安慰自己级乍,他們只是感情好舌劳,可當(dāng)我...
    茶點故事閱讀 67,289評論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著玫荣,像睡著了一般甚淡。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,231評論 1 299
  • 那天贯卦,我揣著相機與錄音资柔,去河邊找鬼。 笑死撵割,一個胖子當(dāng)著我的面吹牛贿堰,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播啡彬,決...
    沈念sama閱讀 40,116評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼羹与,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了庶灿?” 一聲冷哼從身側(cè)響起纵搁,我...
    開封第一講書人閱讀 38,945評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎往踢,沒想到半個月后客燕,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體犁享,經(jīng)...
    沈念sama閱讀 45,367評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,581評論 2 333
  • 正文 我和宋清朗相戀三年吗讶,在試婚紗的時候發(fā)現(xiàn)自己被綠了既忆。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片漱凝。...
    茶點故事閱讀 39,754評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡吼肥,死狀恐怖乌叶,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情佩憾,我是刑警寧澤哮伟,帶...
    沈念sama閱讀 35,458評論 5 344
  • 正文 年R本政府宣布,位于F島的核電站妄帘,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏池凄。R本人自食惡果不足惜抡驼,卻給世界環(huán)境...
    茶點故事閱讀 41,068評論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望肿仑。 院中可真熱鬧致盟,春花似錦、人聲如沸尤慰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,692評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽伟端。三九已至杯道,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間责蝠,已是汗流浹背党巾。 一陣腳步聲響...
    開封第一講書人閱讀 32,842評論 1 269
  • 我被黑心中介騙來泰國打工萎庭, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人齿拂。 一個月前我還...
    沈念sama閱讀 47,797評論 2 369
  • 正文 我出身青樓驳规,卻偏偏與公主長得像,于是被迫代替她去往敵國和親署海。 傳聞我的和親對象是個殘疾皇子吗购,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,654評論 2 354

推薦閱讀更多精彩內(nèi)容