- 數據操作指令
-
move Move vA,vB 將vB寄存器的值賦給vA寄存器,源寄存器與目的寄存器都為4位 move-wide vA,vB 為4為的寄存器對賦值,源寄存器與目的寄存器都為4位 Move/from16 vAA,vBBBB 將vBBBB寄存器的值賦予vAA寄存器,源寄存器16位,目的寄存器8位 move-object vA,vB 出現object即為對象,這里就是為對象賦值,源寄存器和目的寄存器都是4位 move-object/from16 vAA,vBBBB 為對象賦值,源寄存器為16位,目的寄存器為8位 move-object/16 vAA,vBBBB 為對象賦值,源寄存器與目的寄存器都為16位 move-result vAA 將上一個invoke類型的指令操作的單子非都西昂結果賦值給vAA寄存器 move-result-wide vAA 將上一個invoke類型指令操作的雙字非對象結果賦給vAA寄存 move-exception vAA 保存運行時發生的異常到vAA寄存器
-
- 返回指令
-
return return-void 表示函數從一個void方法返回,返回值為空 return vAA 表示函數返回一個32位非對象類型的值,返回寄存器為8位的寄存器vAA return-wide vAA 表示函數返回一個64位非對象類型的值,返回寄存器為8位的寄存器vAA return-object vAA 返回一個對象類型d值,返回寄存器為8位的寄存器vAA
-
- 數據定義指令
-
const 數據定義指令用來定義程序中用到的常量,字符串,類等數據 const/4 vA,#+B 將數值符號擴展位32位后賦給寄存器vAA const/16 vAA,#+BBBB 將數值符號擴展位32位后賦給寄存器vAA const vAA,#+BBBBBBBB 將數值賦給寄存器vA const/high16 vAA,#+BBBB0000 將數值右邊0擴展為32位后賦給寄存器vAA const-string vAA,string@BBBB 通過字符串索引構造一個字符串并賦值給寄存器vAA const-string/jmbo vAA,string@BBBBBBBB 通過字符串索引(較大)構造一個字符串并賦給寄存器vAA const-class vAA,type@BBBB 通過類型索引獲取一個類引用并賦給寄存器vAA
-
- 實例操作指令
-
check-cast vAA,type@BBBB:check-cast 0 將vAA寄存器中的對象引用轉換成指定的類型 如果失敗會爆出classcastException異常 如果類型B指定的是基本類型,對于非基本類型的A來說,運行時會失敗 instanmce-of vA,vB 判斷vB寄存器中的對象引用是否可以轉換成指定的類型 如果可以vA寄存器賦值為1,否則vA寄存器賦值為0 new-instance vAA,type@BBBB 構造一個指定類型對象的新實例,并將對象引用賦值給vAA寄存器,類型符type指定的類型不能是數組類
-
- 數組操作指令
數組操作包括獲取數組長度,新建數組,數組賦值,數組元素取值與賦值等操作 array-length vA,vB 獲取vB寄存器中數組的長度并將值賦給vA寄存器 數組長度指的是數組的條目個數 new -array vA,vB type@CCCC 構造指定類型(type@CCCC)與大小(vB)的數組,并將值賦給vA寄存器 filled-new-array {vC,vD,vE} 構造指定類型(type@CCCC)與大小(vB)的數組,并指定了參數,并將值賦給vA寄存器
- 異常指令
throw vAA 拋出vAA寄存器中指定類型的異常
- 跳轉指令
goto:無條件跳轉 switch:分支跳轉 packed-switch :有規律跳轉 if :條件跳轉 if-eq:等于 if-ne:不等于
- 比較指令
- 字段操作指令
普通字段 => iget 讀---從后往前走 ,iput 寫---從前往后走 靜態字段 => sget 讀 , sput寫
- 方法調用指令
invoke-virtual :調用實例的虛方法
invoke-super : 調用實例的父類/基類方法
invoke-direct :調用實例的直接方法
invoke-static :調用實例的靜態方法
invoke-interface: 調用實例的接口方法
- 數據轉換指令
opcode vA,vB
數據轉化指令用于將一種類型的數值轉換成另一種類型
vB寄存器放需要轉換的數據,轉換后的結果保存在vA寄存器中
- 數據運算指令
add 加
sub 減
mul 乘
div 除
rem 模
and 與
or 活
xor 異或
shl 有符號左移
shr 有符號右移
ushr 無符號右移
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
寄存器
+關注
關注
31文章
5363瀏覽量
121171 -
數據
+關注
關注
8文章
7140瀏覽量
89581 -
編譯
+關注
關注
0文章
661瀏覽量
33041
發布評論請先 登錄
相關推薦
[資料分享]+《Android軟件安全與逆向分析》
不同的寄存器表示方法——v命名法與p命名法 42 3.2.5 Dalvik字節碼的類型、方法與字段表示方法 43 3.3 Dalvik
發表于 09-26 10:53
多寄存器Load/Store內存訪問指令
5.4 多寄存器Load/Store內存訪問指令 多寄存器Load/Store內存訪問指令也叫批量加載/存儲指令,它可以實現在一組
發表于 10-18 15:56
?1次下載
單寄存器的Load/Store指令詳解
(Single Register) 這些指令在ARM寄存器和存儲器之間提供更靈活的單數據項傳送方式。數據項可以是字節、16位半字或32位字。 ② 多
發表于 10-18 15:57
?1次下載
Thumb指令集之多寄存器數據傳送指令解析
于過程調用與返回以及存儲器塊拷貝。但為了編碼的緊湊性,這兩種用法由分開的指令實現,并且這些指令也只使用單一的尋址方式。在其他方面,這些指令的性質與等價的ARM
發表于 10-19 09:56
?0次下載
指令指針寄存器是什么_作用有哪些
指令指針寄存器IP(X86型CPU)相當于ARM型CPU中的程序計數器PC,用于控制程序中指令的執行順序。正常運行時,IP中含有BIU要取的下一條指
發表于 11-13 09:58
?1.2w次閱讀
逆向基礎之寄存器和內存詳解
本文主要介紹的是逆向基礎的寄存器和內存方面的信息,首先介紹的是逆向主要是做什么的,其次對編程和機器架構做了個簡介,最后詳細的闡述了逆向基礎的寄存器
發表于 04-26 09:52
?3027次閱讀
Linux程序狀態寄存器訪問指令
(CPSR或SPSR) MRS R 0 ,CPSR ;傳送CPSR的內容到R 0 MRS R 0 ,SPSR ;傳送SPSR的內容到R 0 2、【MSR指令】 MSR 程序狀態寄存器(CPSR或
評論