匯編基礎2

1.函數調用

fun0mov r4, #100bx lrget_MaxNumcmp r0, r1stmfd sp!, {r0-r12, lr}    //入棧bl fun0                    //調用fun0函數ldmfd sp!, {r0-r12, lr}    //出棧movge r3, r0movlt r3, r1bx lr
mainldr sp, =0x40001000mov r0, #100mov r1, #200mov r2, #100stmfd sp!, {r0-r12, lr}bl get_MaxNum	ldmfd sp!, {r0-r12, lr}

2.指針

c語言:
unsigned int *p匯編:
ldr r1, =0x40000fff //給的地址
ldr r3,=0x11223344 //給的值str r3, [r1]    //將r3存儲到r1里面
ldr r0, [r1]    //將r1指向的值給到r0

3.調用.c文件函數

.c文件:
extern int fun(int a, int b)
{return a+b;
}.s文件ldr sp, =0x40001000import fun            //添加函數stmdf sp!, {r0-r12, lr}mov r0, #10            ;參數a = 10mov r1, #20            ;參數b = 20mov r2, #30            bl fun                //調用函數ldmdf sp!, {r0-r12, lr}

注意:

1.a和b的參數取決于r0和r1,而與r2沒關系,若是給多個寄存器賦值,也只會按順序傳入參數

2.若是傳入的參數大于四個就得進行壓棧

.c文件:
extern int fun(int a, int b, int c, int d, int e)
{return a+b+c+d+e;
}.s文件ldr sp, =0x40001000import fun            //添加函數stmdf sp!, {r0-r12, lr}mov r0, #10            ;參數a = 10mov r1, #20            ;參數b = 20mov r2, #30mov r3, #40mov r4, #50stmdf sp!, {r4}            bl fun                //調用函數ldmdf sp!, {r4}ldmdf sp!, {r0-r12, lr}

4.arm啟動代碼

	preserve8area reset, code, readonlycode32entryldr pc, =start_handerldr pc, =undefine_handerldr pc, =software_handerldr pc, =prefetch_handerldr pc, =data_handernopldr pc, =irq_handerldr pc, =fiq_hander        //ARM 架構的異常向量表實現undefine_handerb undefine_handerimport software_vector    //添加.c文件里面的software_vector函數
software_handerstmfd sp!, {r0-r12, lr}bl software_vector        //調用.c文件里面的software_vector函數ldmfd sp!, {r0-r12, lr}bx lrprefetch_handerb prefetch_handerdata_handerb data_handerirq_handerb irq_handerfiq_handerb fiq_handerexport asm_swi_fun
asm_swi_funswi #7    //軟件中斷  立即數執行對應服務bx lrstart_hander                //上電或者復位的處理函數ldr sp, =0x40001000     //初始化spimport main             //添加.c文件的main函數msr r0, cpsr            //讀取當前程序狀態寄存器(CPSR)到 R0bic r0, r0, #(0x1f << 0)//清除 CPSR 的“模式位”(低 5 位,0x1f = 0b11111)bic r0, r0, #(1 << 7)   //清除 CPSR 的“中斷禁止位 I”(第 7 位),允許 IRQ 中斷orr r0, r0, #(0x10 << 0)//設置“模式位”為 User 模式(0x10 = 0b10000,對應 User 模式)msr cpsr_c, r0          //將修改后的 R0 寫入 CPSR 的“控制位域”(cpsr_c 表示只更新控制位)ldr sp, =0x40001000sub sp, sp, #1024b mainend

4.1 ARM的異常向量表

異常向量地址異常類型代碼中的處理函數作用
0x00000000復位異常(Reset)start_hander系統上電 / 復位時執行,初始化硬件
0x00000004未定義指令異常undefine_hander執行無效指令時觸發(如未實現指令)
0x00000008軟件中斷(SWI)software_hander觸發 SWI 時跳轉到系統調用處理
0x0000000C預取指異常prefetch_hander指令預取失敗(如地址無效)
0x00000010數據訪問異常data_hander數據讀寫失敗(如越界、無權限)
0x00000014保留(Reserved)nop(空指令)ARM 架構預留,暫不使用
0x00000018外部中斷(IRQ)irq_hander外部硬件觸發中斷(如按鍵、定時器)
0x0000001C快速中斷(FIQ)fiq_hander高優先級中斷(如緊急硬件事件)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/98514.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/98514.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/98514.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

20250909的學習筆記

HTML 基礎筆記1. HTML 基本格式<!DOCTYPE html> <html> <head><meta charset"utf-8"><title>中文測試</title> </head> <body>這里是測試body測試內容。 </body> </html>2. HTML 標簽常用標簽 - <h1…

Linux 安全加固;Windows 安全設置

一、Linux 安全加固1. 賬戶與權限管理最小權限原則禁用 root 遠程登錄&#xff1a;修改 /etc/ssh/sshd_config&#xff0c;設置 PermitRootLogin no。使用 sudo 替代直接 root 操作&#xff0c;并通過 /etc/sudoers 限制命令范圍&#xff08;如僅允許 apt 和 systemctl&#xf…

條碼打印檢測一體機是什么?

在工業4.0和智能制造的大背景下&#xff0c;數據的準確性和實時性是構建高效追溯系統。條碼/二維碼作為物理世界與數字世界連接的橋梁&#xff0c;其打印質量直接決定了數據鏈路的可靠性。傳統“打印-人工抽檢/離線全檢”的模式存在流程割裂、效率低下、無法100%覆蓋的弊端&…

Javaweb - 14.6 - Vue3 數據交互 Axios

目錄 Promise 普通函數和回調函數 Promise 簡介 Promise 基本用法 async 和 await 的使用 Axios 介紹 Axios 入門案例 Axios 的 get 和 post 方法 Axios 攔截器 完&#xff01; Promise 普通函數和回調函數 普通函數&#xff1a;正常調用的函數&#xff0c;一般函數…

怎么選適合企業的RPA財務機器人?

對于大多數財務人來說&#xff0c;“月初月末就是噩夢”已經成了常態&#xff1a;一邊要面對堆積如山的單據和報表&#xff0c;一邊還要應付領導不斷加碼的工作&#xff0c;常常忙到深夜&#xff0c;卻總覺得自己陷在重復事務中難有成長。其實&#xff0c;這并不是個體問題&…

html css js網頁制作成品——HTML+CSS無窮網頁設計(5頁)附源碼

目錄 一、?????網站題目 二、??網站描述 三、??網站介紹 四、??網站效果 五、?? 代碼實現 ??HTML

AUTOSAR進階圖解==>AUTOSAR_SWS_PDURouter

AUTOSAR PDU Router詳解文檔 AUTOSAR通信架構中的核心路由模塊目錄 1. 概述2. PDU Router模塊架構3. PDU Router配置模型4. PDU Router路由流程5. PDU Router狀態機6. 總結 1. 概述 PDU Router模塊是AUTOSAR通信架構中的核心組件&#xff0c;負責在AUTOSAR軟件組件之間路由I-…

RHEL7.9、RHEL9.3——源碼安裝MySQL

目錄 一、環境部署 1. 克隆rhel7.9虛擬機 二、源碼安裝MySQL 1. 準備工作 2. 源碼部署mysql8.0.40 1&#xff09;安裝編譯mysql所需軟件包 2&#xff09;編譯安裝mysql8.0.40 3&#xff09;生成啟動腳本 一、環境部署 1. 克隆rhel7.9虛擬機 改名為 “RHEL79_mysql_master” 并…

解決Win11 安全中心刪掉存在隱患的工具

打開設置&#xff0c; 找到Windows安全中心&#xff0c;找到病毒和威脅防護&#xff0c;選擇排除項&#xff0c;點 添加或刪除排除項添加文件&#xff0c;文件夾&#xff0c;工具按照自己需求選擇。或&#xff0c;刪除文件注意&#xff1a;隱患的工具或者文件安裝或者用完&…

通過URI Scheme實現從Web網頁上打開本地C++應用程序(以騰訊會議為例,附完整實現源碼)

目錄 1、需求描述 2、選擇URI Scheme實現 3、何為URI Scheme&#xff1f; 4、將自定義的URL Scheme信息寫入注冊表的C源碼實現 5、如何實現最開始的3種需求 6、后續需要考慮的細節問題 之前陸續收到一些從Web頁面上啟動我們C客戶端軟件的需求&#xff0c;希望我們能提供一…

機器學習02——模型評估與選擇(過擬合與欠擬合、K折交叉驗證、均方誤差、混淆矩陣)

上一章&#xff1a;機器學習01——機器學習概述 下一章&#xff1a;機器學習03——線性模型 機器學習實戰項目&#xff1a;【從 0 到 1 落地】機器學習實操項目目錄&#xff1a;覆蓋入門到進階&#xff0c;大學生就業 / 競賽必備 文章目錄一、經驗誤差與過擬合&#xff08;一&a…

基于 Django 與 Bootstrap 構建的現代化設備管理平臺

整體步驟概覽 創建項目和應用設計模型&#xff08;Model&#xff09; - 定義設備的數據結構配置用戶認證&#xff08;Auth&#xff09; - 使用 Django 自帶的強大用戶系統創建視圖&#xff08;View&#xff09; - 處理業務邏輯&#xff1a;登錄、列表、增刪改查編寫模板&#x…

微軟依舊穩定發揮,Windows 最新更新性能「開倒車」

微軟在前不久為Release Preview測試用戶推送了最新Windows11 25H2版本。按照慣例&#xff0c;正式版將于9月或者10月與咱們見面。雖然看起來是個跨版本的大更新&#xff0c;但是更新方式將服務堆棧更新&#xff08;SSU&#xff09;與最新累積更新&#xff08;LCU&#xff09;。…

一手實測,文心x1.1的升級很驚喜啊

一手實測&#xff0c;文心x1.1的升級很驚喜啊 前言 月9日&#xff0c;在 WAVE SUMMIT深度學習開發者大會上 百度發布了一個新的思考模型文心x1.1&#xff1a; X1 Turbo 升級為 X1.1 了。 文心4.5 Turbo 和 X1 Turbo 是2025年4月25日發布的&#xff0c;距今已經半年過去了&…

Flask 核心基礎:從 路由裝飾器 到 __name__ 變量 的底層邏輯解析

Flask 核心基礎&#xff1a;從路由裝飾器到 name 變量的底層邏輯解析 在使用 Flask 開發 Web 應用時&#xff0c;我們總會從 app Flask(__name__) 和 app.route("/") 這兩行代碼開始。看似簡單的語法背后&#xff0c;藏著 Python 裝飾器機制與 Flask 框架設計的核心…

中國AI云市場報告:阿里云份額達35.8%,高于2至4名總和

9月9日&#xff0c;國際權威市場調研機構英富曼&#xff08;Omdia&#xff09;發布《中國AI云市場&#xff0c;1H25》報告&#xff0c;報告顯示&#xff0c;2025年上半年&#xff0c;中國AI云市場規模達223億元&#xff0c;阿里云占比35.8%位列第一&#xff0c;市場份額高于2到…

鴻蒙Next開發指南:UIContext接口解析與全屏拉起元服務實戰

前言在鴻蒙應用開發過程中&#xff0c;我們經常會遇到需要獲取UI上下文實例或者在非UI上下文中調用UI相關方法的場景。隨著HarmonyOS NEXT的不斷發展&#xff0c;UIContext API為我們提供了更加優雅的解決方案。本文將詳細介紹如何使用UIContext中對應的接口獲取與實例綁定的對…

leaflet讀取mvt格式

如圖所示&#xff0c;是全國的數據&#xff0c;截圖是部分數據先安裝&#xff1a;npm install leaflet npm install leaflet.vectorgrid如果是其余的框架直接用就行&#xff1a;import * as L from leaflet; import leaflet.vectorgrid;我用的是angular,所以是ts中聲明&#xf…

OSG中交互(鼠標、鍵盤)處理

OpenSceneGraph (OSG) 中的交互處理,包括鼠標和鍵盤事件。 一、OSG 事件處理體系 OSG 使用一個基于訪問者模式的事件處理體系,核心類包括: osgGA::GUIEventHandler: 所有事件處理器的基類 osgViewer::Viewer: 查看器,管理事件隊列和分發 osgGA::EventQueue: 事件隊列…

微碩雙N-MOS管WST3392在汽車智能氛圍燈系統中的應用

汽車智能氛圍燈系統是現代車輛提升駕乘體驗的重要配置&#xff0c;其多通道LED的精密調光與控制需選用高性能、小體積的功率開關器件。微碩WINSOK的WST3392是一款雙N溝道MOS管&#xff0c;具有30V耐壓、3.7A連續電流和46mΩ的低導通電阻&#xff0c;特別適用于氛圍燈系統中的多…