ARM匯編編程(AArch64架構)課程 - 第5章函數調用規范

目錄

    • AAPCS64調用約定
      • 參數傳遞規則
      • 返回值規則
    • 棧幀管理
      • SP寄存器
      • FP寄存器 (X29)
      • 棧幀布局示例

在這里插入圖片描述

AAPCS64調用約定

ARM Architecture Procedure Call Standard for 64-bit (AAPCS64)

參數傳遞規則

參數位置寄存器分配特殊規則
參數1-8X0-X7 (64-bit) / W0-W7 (32-bit)浮點數使用 V0-V7
參數>8棧傳遞(按順序右→左壓棧)要求8字節對齊
可變參數所有浮點參數必須通過寄存器傳遞需預留相應寄存器空間

示例代碼:

// 函數調用示例
mov x0, #1       // 第一個整型參數
mov x1, #2       // 第二個整型參數
fmov d0, 3.14    // 第一個浮點參數
bl my_function

返回值規則

  • 整型返回值:X0(64-bit)/W0(32-bit)
  • 浮點返回值:V0(128-bit)/D0(64-bit)/S0(32-bit)
  • 大結構體:通過X8間接返回(調用者分配內存)

棧幀管理

SP寄存器

  • Stack Pointer:始終指向棧頂
  • 操作要求
    • 必須保持16字節對齊
    • 函數退出時必須恢復原始值

FP寄存器 (X29)

  • Frame Pointer:指向當前棧幀基址
  • 典型布局
    High Address
    +---------------+
    |  Caller's FP  | ← FP
    +---------------+
    |   LR (X30)    |
    +---------------+
    |  Local Vars   |
    +---------------+
    |  Callee-save  |
    +---------------+
    | 參數區域(>8)   | ← SP
    Low Address
    

棧幀布局示例

my_function:// 序言stp x29, x30, [sp, #-32]!  // 保存FP/LR并分配棧空間mov x29, sp                 // 建立新棧幀// 函數體str x0, [x29, #16]          // 保存參數到棧// 尾聲ldp x29, x30, [sp], #32     // 恢復FP/LR并釋放棧空間ret

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

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

相關文章

軟考(軟件設計師)軟件工程-成本評估模型,軟件能力成熟度,軟件配置管理

成本評估模型 Putnam 下面通過一個具體案例,逐步說明Putnam模型的計算過程。我們將開發一個銀行核心交易系統,規模為80萬行代碼(LOC),要求24個月內交付。參數符號值說明軟件規模L800,000 LOC通過功能點轉換獲得開發時間…

SASSNet復現

復現結果–Dice:89.354614,Jaccard:80.968917,95HD:7.3987764,誤差在接受范圍 MethodDiceJaccardJaccard # 感想 第19篇完全復現的論文

大數據學習5:網站訪問日志分析

1.數據處理1.1 環境準備進入cd /opt/server/hadoop-3.1.0/sbin文件夾,停止hdfs服務cd /opt/server/hadoop-3.1.0/sbin ./stop-dfs.sh進入/opt/server/hadoop-3.1.0/etc/hadoop文件夾,編輯yarn-site.xml文件/opt/server/hadoop-3.1.0/etc/hadoop vim yarn…

力扣1310. 子數組異或查詢

這一題很明顯的就是用前綴和異或來解決&#xff0c;只要清楚異或的性質&#xff0c;這一題就十分容易。 對異或的性質的講解如下&#xff1a; 異或運算解析 具體代碼如下&#xff1a; class Solution { public:int sum[30005]; vector<int> xorQueries(vector<int>…

React Native 狀態管理方案全面對比

React Native 狀態管理方案全面對比 在 React Native 開發中&#xff0c;狀態管理是構建復雜應用的核心問題。以下是主流狀態管理方案的深度對比分析&#xff1a; 一、基礎方案&#xff1a;useState/useReducer 適用場景 簡單的組件級狀態中等復雜度的局部狀態管理不需要跨組件…

基于Python的程序員數據分析與可視化系統的設計與實現

文章目錄有需要本項目的代碼或文檔以及全部資源&#xff0c;或者部署調試可以私信博主項目介紹背景意義項目展示總結每文一語有需要本項目的代碼或文檔以及全部資源&#xff0c;或者部署調試可以私信博主 項目介紹 互聯網技術飛速發展&#xff0c;數據分析與可視化在程序員工…

Java 枚舉詳解:從基礎到實戰,掌握類型安全與優雅設計

作為一名Java開發工程師&#xff0c;在日常開發中你一定經常使用枚舉&#xff08;enum&#xff09;。自Java 5引入以來&#xff0c;枚舉已經成為定義固定集合常量的首選方式&#xff0c;它比傳統的 public static final 常量更加類型安全、可讀性強&#xff0c;并且具備面向對象…

海外盲盒系統:技術如何重構“信任經濟”?

盲盒的“非透明性”易引發信任危機&#xff0c;而海外盲盒系統通過技術手段構建了“可感知的公平”&#xff1a;1. 區塊鏈存證&#xff1a;概率透明化 隱藏款概率、抽盒記錄上鏈存證&#xff0c;用戶可隨時查詢歷史數據。某歐美用戶通過區塊鏈瀏覽器驗證&#xff0c;確認系統隱…

PyTorch Tensor 操作入門:轉換、運算、維度變換

目錄 1. Tensor 與 NumPy 數組的轉換 1.1 Tensor 轉換為 NumPy 數組 1.2 NumPy 數組轉換為 Tensor 1.3 獲取單個元素的值 2. Tensor 的基本運算 2.1 生成新 Tensor 的運算 2.2 覆蓋原 Tensor 的運算 2.3 阿達瑪積&#xff08;逐元素乘法&#xff09; 2.4 矩陣乘法 3.…

CompletableFuture使用詳解(Super Detailed)

一、 CompletableFuture介紹 多線程開發一般使用Runnable&#xff0c;Callable&#xff0c;Thread&#xff0c;FutureTask&#xff0c;ThreadPoolExecutor&#xff0c;但也有不近如意的地方 Thread Runnable&#xff1a;執行異步任務&#xff0c;沒有返回結果。 Thread Calla…

開源 Arkts 鴻蒙應用 開發(六)數據持久--文件和首選項存儲

文章的目的為了記錄使用Arkts 進行Harmony app 開發學習的經歷。本職為嵌入式軟件開發&#xff0c;公司安排開發app&#xff0c;臨時學習&#xff0c;完成app的開發。開發流程和要點有些記憶模糊&#xff0c;趕緊記錄&#xff0c;防止忘記。 相關鏈接&#xff1a; 開源 Arkts …

【Bluedroid】藍牙協議棧控制器能力解析與核心功能配置機制(decode_controller_support)

本文圍繞Bluedroid藍牙協議棧中控制器能力解析與核心功能配置的關鍵代碼展開&#xff0c;詳細闡述藍牙協議棧如何通過解析控制器硬件能力&#xff0c;構建 SCO/eSCO、ACL 數據包類型支持掩碼&#xff0c;配置鏈路策略、安全服務、查詢與掃描模式等核心功能。這些機制確保協議棧…

小架構step系列07:查找日志配置文件

1 概述 日志這里采用logback&#xff0c;其為springboot默認的日志工具。其整體已經被springboot封裝得比較好了&#xff0c;扔個配置文件到classpath里就能夠使用。 但在實際使用中&#xff0c;日志配置文件有可能需要進行改動&#xff0c;比如日志的打印級別&#xff0c;平…

一文講清楚React Hooks

文章目錄一文講清楚React Hooks一、什么是 React Hooks&#xff1f;二、常用基礎 Hooks2.1 useState&#xff1a;狀態管理基本用法特點2.2 useEffect&#xff1a;副作用處理基本用法依賴數組說明2.3 useContext&#xff1a;上下文共享基本用法特點三、其他常用 Hooks3.1 useRed…

Apache http 強制 https

1. 修改一下文件配置 sudo nano /etc/apache2/sites-enabled/000-default.conf<VirtualHost *:80>ServerName hongweizhu.comServerAlias www.hongweizhu.comServerAdmin webmasterlocalhostDocumentRoot /var/www/html# 強制重定向到HTTPSRewriteEngine OnRewriteCond …

【讀代碼】GLM-4.1V-Thinking:開源多模態推理模型的創新實踐

一、基本介紹 1.1 項目背景 GLM-4.1V-Thinking是清華大學KEG實驗室推出的新一代開源視覺語言模型,基于GLM-4-9B-0414基礎模型構建。該項目通過引入"思維范式"和強化學習課程采樣(RLCS)技術,顯著提升了模型在復雜任務中的推理能力。其創新點包括: 64k超長上下文…

從代碼生成到智能運維的革命性變革

AI大模型重塑軟件開發&#xff1a;從代碼生成到智能運維的革命性變革 希望對大家有一定的幫助&#xff0c;進行參考 目錄AI大模型重塑軟件開發&#xff1a;從代碼生成到智能運維的革命性變革 希望對大家有一定的幫助&#xff0c;進行參考一、范式轉移&#xff1a;軟件開發進入&…

豆包編寫Java程序小試

今天下載了一本第四版電氣工程師手冊&#xff0c;非常棒的一本書&#xff0c;在給PDF添加目錄的時候&#xff0c;由于目錄有將近60頁&#xff0c;使用老馬開發的PdgCntEditor有點卡頓&#xff0c;不過補充下&#xff0c;老馬這個PdgCntEditor還是非常好的。所以我決定用Java編一…

SpringBoot整合騰訊云新一代行為驗證碼

一 產品介紹 騰訊云官方介紹鏈接 騰訊云新一代行為驗證碼&#xff08;Captcha&#xff09;&#xff0c;基于十道安全防護策略&#xff0c;為網頁、App、小程序開發者打造立體、全面的人機驗證。在保護注冊登錄、活動秒殺、點贊發帖、數據保護等各大場景下業務安全的同時&…

SenseGlove新一代外骨骼力反饋手套Rembrand來襲!亞毫米級手部動捕+指尖觸覺力采集+5Dof主動力反饋多模態

在遠程機器人操作領域&#xff0c;精準的觸覺感知與靈活的動作控制始終是核心需求。SenseGlove 新推出的 Rembrandt 力反饋外骨骼數據手套&#xff0c;以先進技術為支撐&#xff0c;為遠程操控人形機器人手部提供了無縫解決方案&#xff0c;讓操作更精準、更高效。值得一提的是…