色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Arm64程序調用通用寄存器的使用方法

麥辣雞腿堡 ? 來源:人人極客社區(qū) ? 作者:業(yè)余程序員plus ? 2023-07-28 11:28 ? 次閱讀

下面是Arm64程序調用標準規(guī)定的通用寄存器的使用方法。

參數寄存器(X0-X7) 函數參數數量小于等于8個時,使用X0-X7傳遞,大于8個時,多余的使用棧傳遞,函數返回時返回值保存在X0中。

調用者保存的臨時寄存器(X9-X15)調用者若使用到了X9-X15寄存器,在調用子函數之前,需要將X9-X15寄存器保存到自己的棧中,子函數使用這些寄存器的時候不需要保存和恢復。

被調用者保存的寄存器(X19-X29) 被調用者若使用到這些寄存器,需要將其保存到自己的棧中,返回時從棧中恢復。

特殊用途的寄存器

X8是間接結果寄存器。用于傳遞間接結果的地址位置,例如,函數返回一個大結構。

X16-X17過程內調用暫存寄存器。。

X18平臺寄存器。

X29是棧幀(FP)寄存器。保存了調用函數的棧幀地址。

X30保存了返回地址(LR)。函數返回后跳轉到該地址處運行。

圖片

實例下圖是內核Oops時打印出的信息。第一張圖片是寄存器信息,pc寄存器和sp寄存器對棧回溯有重要作用。第二張圖是內核線程irq/231-dwc3棧數據的二進制轉儲,?;厮菥褪窃谶@些二進制數據中找到棧幀,從而找到調用的函數地址。

圖片圖片

下圖是內核?;厮莸慕Y果,發(fā)生異常函數的地址保存在異常棧中,不在內核線程irq/231-dwc3棧中。

圖片

發(fā)生異常的函數可以根據pc寄存器得到,該函數是?;厮莸牡谝粋€函數。sp寄存器指向了第一個棧幀中的FP1寄存器,即0xffffffc0ee823b80地址,F(xiàn)P1向高地址偏移8字節(jié)得到LR1寄存器,即0xffffff80087369e4地址,該地址位于dwc3_ep0_stall_and_restart函數內,該函數是棧回溯的第二個函數。FP1指向了第二個棧幀的FP2,根據棧幀找到LR2,依次類推。所有的棧幀最終如下圖所示,總共找到7個棧幀,因此irq/231-dwc3內核線程發(fā)生異常時總共有8個函數調用,和內核輸出的函數調用關系一致。需要注意的是,代碼里調用了該函數,但在?;厮葜袥]有找到符號,肯定是編譯器優(yōu)化,將該函數內聯(lián)了,是否內聯(lián)可以通過反匯編確認。

圖片

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Linux
    +關注

    關注

    87

    文章

    11292

    瀏覽量

    209332
  • 程序
    +關注

    關注

    117

    文章

    3785

    瀏覽量

    81004
收藏 人收藏

    評論

    相關推薦

    介紹一種利用Arm64架構的System counter來實現(xiàn)提供TSC的方法

    了不小的挑戰(zhàn)。為此,本文分享Arm64架構下如何獲取TSC的方法,以方便大家移植使用。首先,System counter是Arm64下獨立于CPU core的計數,在系統(tǒng)上電時,會給
    發(fā)表于 06-02 17:12

    淺析openat系統(tǒng)調用arm64下的實現(xiàn)及使用原理

    open_test --static//反匯編objdump -D open_test > open_arm_asmopen_arm_asm可以看到將寄存器x8設置為系統(tǒng)調用號0x38
    發(fā)表于 06-02 17:48

    arm64和x86服務上運行的耗時來發(fā)現(xiàn)Docker在arm64架構下的性能問題

    ;上。Docker network子命令通過"exec"來調用外部的“iptables”程序來為容器配置網絡數據包處理規(guī)則。在調用這個接口的時候,arm64機器總是比x86機器花費
    發(fā)表于 07-12 15:48

    ARM寄存器詳解

    ARM有37個寄存器,其中31個通用寄存器,6個狀態(tài)寄存器。   這里尤其要注意區(qū)別的是ARM
    發(fā)表于 07-10 10:04 ?2956次閱讀

    arm程序狀態(tài)寄存器訪問指令

    arm程序狀態(tài)寄存器訪問指令
    發(fā)表于 01-04 13:11 ?0次下載

    IA64 應用程序寄存器

    IA64 應用程序寄存器
    發(fā)表于 01-04 13:11 ?0次下載

    淺談ARM寄存器組織

    是32位的,但目前只使用了其中的12位。除了這6個狀態(tài)寄存器外,其余的31個寄存器又稱為通用寄存器。 ARM處理
    發(fā)表于 10-18 13:26 ?1次下載
    淺談<b class='flag-5'>ARM</b><b class='flag-5'>寄存器</b>組織

    數據傳送指令之程序狀態(tài)寄存器指令簡述

    分享到:標簽:數據傳送指令 微處理 程序狀態(tài)寄存器指令 MRS ARM 5.6 程序狀態(tài)寄存器
    發(fā)表于 10-18 17:03 ?1次下載

    寄存器操作方法_對寄存器操作的通用方法總結

    本文主要詳解寄存器操作方法以及對寄存器操作的通用方法總結,具體的跟隨小編來了解一下。
    的頭像 發(fā)表于 05-22 15:53 ?2.3w次閱讀

    ARM64ARM32 的Linux程序區(qū)別在哪里

    arm64ARM64。我在示例中使用了AArch64寄存器,但我所描述的許多問題也發(fā)生在ARMv8-A 32位執(zhí)行狀態(tài)。
    的頭像 發(fā)表于 08-09 09:51 ?2.7w次閱讀
    <b class='flag-5'>ARM64</b>與<b class='flag-5'>ARM</b>32 的Linux<b class='flag-5'>程序</b>區(qū)別在哪里

    零基礎學ARM程序狀態(tài)寄存器訪問指令解析

    一、程序狀態(tài)寄存器訪問指令ARM微處理支持程序狀態(tài)寄存器訪問指令,用于在
    的頭像 發(fā)表于 12-24 13:36 ?3437次閱讀

    AArch64寄存器介紹

    作為 RISC 架構,AArch64 提供了大量的通用寄存器。除通用寄存器之外,本節(jié)還會介紹特殊寄存器
    的頭像 發(fā)表于 08-24 09:57 ?6104次閱讀

    ARM通用寄存器及狀態(tài)寄存器詳解

    筆者來聊聊ARM通用寄存器以及狀態(tài)寄存器的認識與理解。
    的頭像 發(fā)表于 01-06 14:58 ?7148次閱讀

    arm三個寄存器在gdb調試時的作用

    ARM寄存器(r0、r1和r2)的作用非常重要。 1. R0寄存器: R0寄存器ARM處理
    的頭像 發(fā)表于 01-31 10:44 ?974次閱讀

    通用寄存器是什么意思

    在計算機體系結構中,通用寄存器是中央處理(CPU)內部最為核心和基礎的組成部分之一。它們被設計為能夠存儲和傳輸各種類型的數據和指令,是CPU進行數據處理和運算的關鍵工具。通用
    的頭像 發(fā)表于 09-05 14:13 ?853次閱讀
    主站蜘蛛池模板: 亚洲人成77777| 免费毛片视频网站| 国产传媒在线播放| av影音先锋影院男人站| 最近中文字幕在线看免费完整版| 亚洲成人免费在线观看| 天天狠狠色噜噜| 日日日操操操| 色爱AV综合区| 双手绑在床头调教乳尖| 色婷婷AV99XX| 日日夜夜国产| 少妇精油按摩| 我解开了岳的乳第一个女人| 三级黃60分钟| 撕开美女的衣服2| 无人区免费一二三四乱码| 微拍秒拍99福利精品小视频| 少妇两个奶头喷出奶水了怎么办| 入禽太深视频免费视频| 台湾佬休闲中性娱乐网| 天天啪免费视频在线看| 洗濯屋H纯肉动漫在线观看| 羲义嫁密着中出交尾gvg794| 亚洲免费高清视频| 在线 国产 欧美 专区| 中文无码熟妇人妻AV在线| 中文字幕在线不卡日本v二区 | 国模孕妇模特季玥之粉红| 国产亚洲欧美ai在线看片| 京香在线观看| 在线中文字幕| 9999精品视频| 大胸美女洗澡扒奶衣挤奶| 国产精品伊人| 精品国产美女AV久久久久| 久欠热视频精品首页| 日本漫画大全无翼乌| 午夜黄视频| 最近的2019中文字幕国语版| 99在线这精品视频|