亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪問(wèn)板塊 發(fā)新帖
查看: 1506 | 回復(fù): 0
打印 上一主題 下一主題

Arm匯編實(shí)例解析 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2009-12-16 09:06 |只看該作者 |倒序?yàn)g覽


  Normal
  0
  
  7.8 磅
  0
  2
  
  false
  false
  false
  
   
   
   
   
   
   
   
   
   
   
   
   
  
  MicrosoftInternetExplorer4



st1\:*{behavior:url(#ieooui) }
/* Style Definitions */
table.MsoNormalTable
        {mso-style-name:普通表格;
        mso-tstyle-rowband-size:0;
        mso-tstyle-colband-size:0;
        mso-style-noshow:yes;
        mso-style-parent:"";
        mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
        mso-para-margin:0cm;
        mso-para-margin-bottom:.0001pt;
        mso-pagination:widow-orphan;
        font-size:10.0pt;
        font-family:"Times New Roman";
        mso-fareast-font-family:"Times New Roman";
        mso-ansi-language:#0400;
        mso-fareast-language:#0400;
        mso-bidi-language:#0400;}


  

                              Arm匯編實(shí)例解析
源代碼
int global=19;
int main(int argc,char **argv)
{
      
int i, j;
      
i=1;
      
j=2;
      
if(j>2){
                global=j;
      
} else {
                global=i;
      
}
      
return 0;
}
編譯:
Gcc test_arm.c

Objdump后的結(jié)果
Objdump –CSDR >obj
Cat obj
00008350 :
8350:   e1a0c00d   
mov ip, sp
/*把進(jìn)入main之前的棧指針保存*/
8354:   e92dd800   
stmdb   sp!, {fp, ip, lr, pc}
/*把fp也即是棧底指針,ip(此時(shí)指向sp)保存 ,lr也就是返回地址保存,pc當(dāng)前指令地址保存(為實(shí)際的值加8)*/
8358:   e24cb004    sub fp, ip, #4  ; 0x4
/*fp=ip-4,也就是說(shuō)fp此刻指向的地方是屬于新的函數(shù)的棧底就是上一個(gè)函數(shù)的棧指針下面*/
835c:  
e24dd010    sub sp, sp, #16 ; 0x10
/*sp往下漲16個(gè)字節(jié),也就是4個(gè)字長(zhǎng)*/
8360:   e50b0010    str r0, [fp, #-16]
/*把r0的內(nèi)容放在剛長(zhǎng)出來(lái)的空間里面的第一個(gè)*/
8364:   e50b1014    str r1, [fp, #-20]
/*把r1的內(nèi)容放在r0下面,這都是在棧里*/
8368:   e3a03001    mov
r3, #1  ; 0x1
/*把1放在r3里面,其實(shí)就是i*/
836c:  
e50b3018    str r3, [fp, #-24]
/*把i的值1放在開辟出來(lái)的四個(gè)字長(zhǎng)的第三個(gè)空間里面*/
8370:   e3a03002    mov r3, #2
; 0x2
/*把j的值放在r3里面*/
8374:   e50b301c    str r3,
[fp, #-28]
/*把r3的值2放在了開辟出來(lái)的四個(gè)字長(zhǎng)的空間里面最后一個(gè)*/
8378:   e51b301c    ldr r3,
[fp, #-28]
/*再把剛放進(jìn)去的東西,取出來(lái)放在r3里面*/
837c:  
e3530002    cmp r3, #2  ; 0x2
/*和2比較*/
8380:   da000003    ble 8394
/*如果小于==就跳轉(zhuǎn)到8394*/
8384:   e59f2020    ldr
r2, [pc, #32]   ; 83ac
/*把全局的那個(gè)變量global的值取到r2上*/
8388:   e51b301c    ldr r3,
[fp, #-28]
/*把四個(gè)字長(zhǎng)的空間里面最后一個(gè)放到r3寄存器里面*/
838c:  
e5823000    str r3, [r2]
/*把j的值存在r2所在的空間也就是global變量的地方*/
8390:   ea000002    b   83a0 main+0x50>
/*跳轉(zhuǎn)到83a0*/
8394:  
e59f2010    ldr r2, [pc, #16]   ; 83ac
/*把83ac的地址放到r2寄存器*/
8398:   e51b3018    ldr r3, [fp, #-24]
/*把i的值放在r3寄存器*/
839c:  
e5823000    str r3, [r2]
/*把i的值放到global變量*/
83a0:   e3a00000    mov r0, #0
; 0x0
/*把r0設(shè)為0*/
83a4:   e24bd00c    sub sp,
fp, #12 ; 0xc
/*sp=fp-12,這樣的話,sp就指向了先前入棧的時(shí)候fp所在的地址*/
83a8:  
e89da800    ldmia  
sp, {fp, sp, pc}
/*這樣的話再把sp所在的內(nèi)容出棧,把以前的fp送會(huì)到fp,把以前的ip送給sp,把以前的返回地址送回給了pc,這樣的話,下次執(zhí)行的時(shí)候就直接跳轉(zhuǎn)到這個(gè)pc地址,也就是調(diào)用這個(gè)函數(shù)的時(shí)候設(shè)好的返回地址*/
83ac:   0001055c    andeq  
r0, r1, ip, asr r5
/*這里其實(shí)就是那個(gè)全局的global所在的地址,而不是一個(gè)指令*/
               
               
               

本文來(lái)自ChinaUnix博客,如果查看原文請(qǐng)點(diǎn):http://blog.chinaunix.net/u2/67984/showart_2122441.html
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP