freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

arm匯編語(yǔ)言程序設(shè)計(jì)-資料下載頁(yè)

2025-01-18 02:22本頁(yè)面
  

【正文】 LDR SP, STACKSVC ; STACKSVC堆棧地址 ;切換到中斷模式并設(shè)置其堆棧 MSR CPSR_c, 0xd2 ; CPSR[4:0]10010 LDR SP, STACKIRQ ; STACKIRQ堆棧地址 ;切換到快中斷模式并設(shè)置其堆棧 MSR CPSR_c, 0xd1 ; CPSR[4:0]10001 LDR SP, STACKFIQ ; STACKFIQ堆棧地址 ;切換到中止模式并設(shè)置其堆棧 MSR CPSR_c, 0xd7 ; CPSR[4:0]10111 LDR SP, STACKABT ; STACKABT堆棧地址 ;切換到未定義模式并設(shè)置其堆棧 MSR CPSR_c, 0xdb ; CPSR[4:0]11011 LDR SP, STACKUND ; STACKUND堆棧地址 ;切換到系統(tǒng)模式并設(shè)置其堆棧 MSR CPSR_c, 0xdf ; CPSR[4:0]11111 LDR SP, STACKSYS ; STACKSYS堆棧地址 MOV PC, R0 ;調(diào)用返回 匯編語(yǔ)言和 C語(yǔ)言編程 ? 在實(shí)際編程時(shí),程序的初始化部分用匯編語(yǔ)言完成,用 C或 C++完成主要的編程任務(wù)。為了保證程序調(diào)用時(shí)參數(shù)傳遞的正確性,匯編語(yǔ)言程序的設(shè)計(jì)要遵守 APCS( ARM Produce Call Standard),這些基本規(guī)則包括子程序調(diào)用過(guò)程中寄存器的使用規(guī)則、堆棧的使用規(guī)則以及參數(shù)傳遞規(guī)則等。 ? APCS: ( 1)寄存器的使用規(guī)則 ( 2)堆棧的使用規(guī)則 ( 3)參數(shù)傳遞使用規(guī)則 ( 1)寄存器的使用規(guī)則 ? 子程序間通過(guò)寄存器 R0R3來(lái)傳遞參數(shù),記作 A0A3。被調(diào)用的子程序在返回前無(wú)需恢復(fù)寄存器 R0R3的內(nèi)容 —也即這些寄存器的值是由調(diào)用者保存的。 ? 子程序使用 R4R11寄存器來(lái)保存局部變量,記作 V1V8。如果被調(diào)用的子程序要用到 R4R11,在進(jìn)入時(shí)要保存這些寄存器的值 —壓棧,使用完后在返回前必須恢復(fù)這些寄存器的值 —出棧,也即這些寄存器的值是由被調(diào)用者保存的。 ? 寄存器 R12用作子程序間臨時(shí)寄存器,記作 IP。 ? 寄存器 R13用作數(shù)據(jù)棧指針,記作 SP,不能用作他用。在子程序進(jìn)入和退出時(shí) SP的值必須相等。 ? 寄存器 R14稱為鏈接寄存器,記作 LR。它用作保存子程序的返回地址。 ? 寄存器 R15是程序計(jì)數(shù)器,記作 PC。不能用作其他用途。 寄存器 別名 特殊名稱 使用規(guī)則 R0 A1 參數(shù) /結(jié)果 /臨時(shí)寄存器 1 R1 A2 參數(shù) /結(jié)果 /臨時(shí)寄存器 2 R2 A3 參數(shù) /結(jié)果 /臨時(shí)寄存器 3 R3 A4 參數(shù) /結(jié)果 /臨時(shí)寄存器 4 R4 V1 局部變量寄存器 1 R5 V2 局部變量寄存器 2 R6 V3 局部變量寄存器 3 R7 V4 局部變量寄存器 4 R8 V5 局部變量寄存器 5 R9 V6 局部變量寄存器 6 R10 V7 SL 局部變量寄存器 7 / 堆棧限制指針 R11 V8 FP 幀指針 R12 IP 子程序內(nèi)部調(diào)用的臨時(shí)寄存器 R13 SP 堆棧指針 R14 LR 鏈接寄存器 R15 PC 程序寄存器 ( 2)堆棧的使用規(guī)則 ? 只要有一個(gè)函數(shù)被調(diào)用,在堆棧中就產(chǎn)生一個(gè)新的活動(dòng)幀,其中包含回溯記錄、局部變量等。 ? 堆??煞譃闈M棧和空棧,當(dāng)棧指針指向最后一個(gè)入棧的數(shù)據(jù)元素時(shí),成為滿棧。否則稱為空棧。 ? 根據(jù)棧的增長(zhǎng)方向不同可以分為遞增棧和遞減棧。 滿遞減棧( Full Descending) 空遞減棧( Empty Descending ) 滿遞增棧( Full Ascending ) 空遞增棧( Empty Ascending ) ? ATPCS規(guī)定堆棧為 FD類型,并且對(duì)堆棧的操作是 8字節(jié)對(duì)齊的。 ( 3)參數(shù)傳遞使用規(guī)則 ? 對(duì)于參數(shù)可變的子程序,當(dāng)參數(shù)不超過(guò) 4個(gè)時(shí),可以使用寄存器 R0~R3來(lái)傳遞;當(dāng)參數(shù)超過(guò) 4個(gè)時(shí),將剩余的參數(shù)用堆棧來(lái)傳遞,入棧的順序與參數(shù)的順序相反,最后一個(gè)先入棧。 ? 結(jié)果為一個(gè) 32位整數(shù)時(shí),通過(guò) R0返回。 結(jié)果為一個(gè) 64位整數(shù)時(shí),通過(guò) R0、 R1返回,依此類推。 對(duì)于位數(shù)更多的結(jié)果,需要通過(guò)內(nèi)存來(lái)傳遞。 ? C程序調(diào)用匯編程序示例 C語(yǔ)言源程序 : include Extern void Strcopy ( char * d , const char * s ) 。 int main () { const char * srcstr = ― First string – source ― 。 char dststr [ ] = ― Second string – destination ― 。 printf ( ― Before copying : \n ― ) 。 printf ( ― %s \n %s \n ‖, srcstr , dststr ) 。 strcopy ( dststr , srcstr ) 。 printf ( ―After copying : \n ― ) 。 printf ( ― %s \n %s \n ‖, srcstr , dststr ) 。 return 0 。 } 匯編語(yǔ)言源程序 AREA Scopy, CODE , READONLY EXPORT strcopy Strcopy ; R0指向目標(biāo)地址 ; R1指向源地址 LDRB R2, [R1], 1 STRB R2, [R0], 1 CMP R2, 0 BNE Strcopy MOV PC, LR END ? 匯編程序調(diào)用 C程序 匯編語(yǔ)言調(diào)用 C程序之前,要用 IMPORT偽指令來(lái)聲明被調(diào)用的 C程序,并用 BL指令來(lái)調(diào)用。 下例中, C語(yǔ)言程序 g () 完成 5個(gè)整數(shù)相加的功能,匯編程序ARM_add則要調(diào)用 g () 完成 5個(gè)整數(shù)和的功能,參數(shù)傳遞為 1~4個(gè)均在 R0~R3中,第 5個(gè)參數(shù)利用堆棧傳送。 C語(yǔ)言源程序 : include int g ( int a, int b, int c, int d, int e ) ;實(shí)現(xiàn) 5個(gè)整數(shù)求和 { return a+b+c+d+e ; } 匯編源程序 : AREA ARM_add, CODE, READONLY EXPORT ARM_add IMPORT g ENTRY STR LR, [SP, 4]! MOV R0, 1 MOV R1, 2 MOV R2, 3 MOV R3, 4 MOV R4, 5 STR R4, [SP, 4]! BL g ADD SP, SP, 4 LDR PC, [SP], 4 EN
點(diǎn)擊復(fù)制文檔內(nèi)容
高考資料相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1