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

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

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

AArch64寄存器介紹

Linux閱碼場 ? 來源:Linux閱碼場 ? 作者:Linux閱碼場 ? 2022-08-24 09:57 ? 次閱讀

作者簡介

周文嘉,目前就職于某國產(chǎn) AI GPU 芯片公司,曾服務(wù)于 ARM、阿里巴巴、HTC 等公司,擁有 10 年以上工作經(jīng)驗(yàn),主要從事系統(tǒng)軟件開發(fā),涵蓋系統(tǒng)庫開發(fā)、指令集優(yōu)化、Linux內(nèi)核開發(fā)等,為某些開源社貢獻(xiàn)過一定數(shù)量的補(bǔ)丁,擔(dān)任 Free time team 創(chuàng)始人,致力于免費(fèi)教育事業(yè)。

邵靖杰,目前就職于某國產(chǎn)大型機(jī) ARM CPU 研究所,主要從事眾核處理器的系統(tǒng)級緩存研發(fā)工作。

張健,先后在 SUSE、華為、區(qū)塊鏈創(chuàng)業(yè)公司、寒武紀(jì)等公司工作,擔(dān)任工程師、架構(gòu)師、技術(shù)合伙人等,研究方向包括 ARM、Linux 發(fā)行版、Linux 內(nèi)核、RISC-V 和虛擬化。

……

目錄

1.2 AArch64 寄存器堆................................2

1.2.1 通用寄存器 ...................................2

1.2.2 特殊寄存器 ...................................2

1.2.3 系統(tǒng)控制寄存器 ...........................2

1.2.4 處理器狀態(tài) ...................................3

1.2.5 函數(shù)調(diào)用標(biāo)準(zhǔn) ...............................4

作為 RISC 架構(gòu),AArch64 提供了大量的通用寄存器。除通用寄存器之外,本節(jié)還會介紹特殊寄存器、系統(tǒng)控制寄存器、處理器狀態(tài)、函數(shù)調(diào)用標(biāo)準(zhǔn)。

1.2.1 通用寄存器

通用寄存器分為兩類。其中一類寄存器包括 X0~X30,用于普通的指令集,每個(gè)寄存器都有 64 位(Xn)和 32 位(Wn)兩種表示形式。其中 32 位的表示形式是 64 位表示形式的低 32位。另一類寄存器包括 V0~V31,用于浮點(diǎn)運(yùn)算、SIMD、crypto 等領(lǐng)域。每個(gè)寄存器長度都是128 位(Qn),它們有 64 位(Dn)、32 位(Sn)、16 位(Hn)、8 位(Bn)這 4 種表示形式。以 X0 和 V0 為例,X0 是 64 位寄存器,它的低 32 位是 W0。V0 也稱為 Q0,Q0 是一個(gè)128 位的寄存器,它的低 64 位稱為 D0,它的低 32 位稱為 S0,它的低 16 位稱為 H0,它的低8 位稱為 B0,如圖 1.1 所示。

8f6f762a-22c7-11ed-ba43-dac502259ad0.png

1.2.2 特殊寄存器

XZR 和 WZR 分別對應(yīng) 64 位與 32 位的零寄存器。對這些寄存器進(jìn)行讀操作,將會獲取到0;對這些寄存器進(jìn)行的寫操作將會被處理器忽略。與 ARM 的 32 位架構(gòu)不同,PC 寄存器已經(jīng)不再是一個(gè)通用寄存器,無法直接訪問。ARM 指令的長度是 4 字節(jié),因此對于 ARMv8 上的純 ARM 指令來說,PC 寄存器是按字節(jié)對齊的。SP 寄存器也不再是一個(gè)通用寄存器,SP寄存器強(qiáng)制按 16 字節(jié)對齊。

1.2.3 系統(tǒng)控制寄存器

ARM 的系統(tǒng)控制寄存器都以“_ELx”為后綴,其中“x”表示某異常級別(Exception Level,EL)的一個(gè)數(shù)字,如 SCTLR_EL1。后綴的數(shù)字意味著能夠訪問該寄存器的最低異常級別,ARM的系統(tǒng)控制寄存器如表 1.1 所示。

8f7bcccc-22c7-11ed-ba43-dac502259ad0.png

MRS 和 MSR 指令用于讀寫系統(tǒng)控制寄存器,示例代碼如下。

MRS    X0, SCTLR_EL1     // X0 = SCTLR_EL1 MSR    SCTLR_EL1, X0     // SCTLR_EL1 = X0

常用的系統(tǒng)控制寄存器及其功能如表 1.2 所示。

8f9724ae-22c7-11ed-ba43-dac502259ad0.png

ARM 的系統(tǒng)控制寄存器數(shù)量龐大,詳細(xì)的介紹可以參考文檔 DDI0487F_b_ARMv8_arm.pdf。

1.2.4 處理器狀態(tài)

AArch64 通過 PSTATE(process state)的標(biāo)志位來保存處理器的狀態(tài),處理器執(zhí)行指令的時(shí)候,可以讀取和設(shè)置這些標(biāo)志位。這些標(biāo)志位既可以通過 mrs/msr 指令進(jìn)行訪問,也可以通過 DAIFSet、DAIFClr、SPSel、PAN、UAO 等指令直接訪問。PSTATE 寄存器的標(biāo)志位如表 1.3 所示。

8fc3e278-22c7-11ed-ba43-dac502259ad0.png

1.2.5 函數(shù)調(diào)用標(biāo)準(zhǔn)

1.AArch64 基本指令集函數(shù)調(diào)用規(guī)則

AArch64 提供了 31 個(gè) 64 位的通用寄存器 X0~X30,SP 寄存器已經(jīng)變成了一個(gè)專用寄存器。這些寄存器的描述如表 1.4 所示。

8fd4741c-22c7-11ed-ba43-dac502259ad0.png

8ff35d32-22c7-11ed-ba43-dac502259ad0.png

值得注意的是,X16 和 X17 寄存器在動(dòng)態(tài)鏈接的時(shí)候,可能會被某些鏈接器用于實(shí)現(xiàn)特殊功能。X18 寄存器在 Darwin 和 Windows 平臺上會保留作為平臺寄存器使用。在代碼優(yōu)化的時(shí)候,這 3 個(gè)寄存器要謹(jǐn)慎使用。

2.AArch64 NEON

指令集函數(shù)調(diào)用規(guī)則 AArch64 提供了 32 個(gè) 128 位的寄存器(V0~31),可以用來進(jìn)行 SIMD 和浮點(diǎn)運(yùn)算。其中,V0~V7 這 8 個(gè)寄存器用來傳遞參數(shù)和函數(shù)返回值,V8~V15 這 8 個(gè)寄存器需要由被調(diào)函數(shù)保存(只需要保存這些寄存器的低 64 位即可)。D8~D15 是 V8~V15 寄存器的低 64 位,因此通過如下的代碼片段保存 D8~D15 的內(nèi)容,就可以在函數(shù)中使用 V0~V31 這 32 個(gè)寄存器了。

stp        d8, d9, [sp, -192]! 
stp        d10, d11, [sp, 16] stp        d12, d13, [sp, 32] stpd14,d15,[sp,48]

3.AArch64 SVE

指令集函數(shù)調(diào)用規(guī)則 如果平臺支持 SVE 擴(kuò)展,那么 AArch64 會提供 32 個(gè)可變長的向量寄存器 Z0~Z31。每個(gè)寄存器都可以用來進(jìn)行 SIMD 和浮點(diǎn)運(yùn)算,其中 Z0~Z7 用來傳遞參數(shù)和函數(shù)返回值。Z8~Z15 這 8 個(gè)寄存器需要由被調(diào)函數(shù)保存(只需要保存這些寄存器的低 64 位即可)。AArch64 還為 SVE 提供了 16 個(gè)斷言寄存器 P0~P15,其中 P0~P3 這 4 個(gè)寄存器用來傳遞參數(shù)和函數(shù)返回值。

審核編輯:湯梓紅


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

    關(guān)注

    68

    文章

    19259

    瀏覽量

    229652
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5336

    瀏覽量

    120230
  • aarch64
    +關(guān)注

    關(guān)注

    0

    文章

    7

    瀏覽量

    5023
  • 函數(shù)調(diào)用
    +關(guān)注

    關(guān)注

    0

    文章

    19

    瀏覽量

    2585

原文標(biāo)題:1.2.5 函數(shù)調(diào)用標(biāo)準(zhǔn) ...............................4

文章出處:【微信號:LinuxDev,微信公眾號:Linux閱碼場】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    簡要分析AArch64的虛擬化

    的指令集:T32和A32。標(biāo)準(zhǔn)寄存器寬度為32位。AArch6464位執(zhí)行狀態(tài)。有一個(gè)可用的指令集:A64。標(biāo)準(zhǔn)寄存器寬度為
    發(fā)表于 03-30 10:36

    在ARMv8中aarch64aarch32是怎樣進(jìn)行切換的

    、boot-a64.Sfastmodel最開始執(zhí)行程序,是在EL3,在EL3,設(shè)置scr_el3寄存器,設(shè)置EL2運(yùn)行模式是non-secure,aarch32。設(shè)置elr_el3,以及spsr_el3
    發(fā)表于 04-01 15:09

    一文讀懂ARM AArch64 state的寄存器

    AArch64 state的寄存器寄存器分為一般寄存器和特殊寄存器,另外一些寄存器在特權(quán)執(zhí)行模式
    發(fā)表于 05-09 09:37

    Hyp調(diào)試控制寄存器配置

    是:一個(gè) Banked EL2 寄存器。在架構(gòu)上映射到 AArch64 MDCR_EL2 寄存器。屬性請參閱 表 4-85 c1 寄存器摘要中的
    發(fā)表于 06-08 18:04

    如何在x86環(huán)境下基于Qemu和Docker快速搭建AARCH64開發(fā)環(huán)境

    概述近年來 Arm 服務(wù)的發(fā)展勢頭很猛,但大部分人的個(gè)人電腦還是 x86 環(huán)境,開發(fā)上存在不便。從 docker-hub 可以下載到一個(gè)名字叫 dev4arm64/aarch64
    發(fā)表于 07-11 15:18

    簡單研究一下Armv8-A的AArch64寄存器

    寄存器必須是系統(tǒng)寄存器。對于系統(tǒng)寄存器的訪問,也是通過MSR和MRS指令。本次介紹寄存器只是AArch
    發(fā)表于 09-20 14:54

    AArch64異常模型指南

    AArch64異常模型指南介紹了Armv8-A中的異常和特權(quán)模型Armv9-A。它涵蓋了Arm體系結(jié)構(gòu)中不同類型的異常,以及處理與異常的關(guān)系。 這些內(nèi)容面向底層代碼的開發(fā)人員,例如引導(dǎo)代碼或內(nèi)核
    發(fā)表于 08-02 06:03

    AArch64自托管調(diào)試指南

    集成在Arm核心中的調(diào)試邏輯提供了觀察和控制CPU和系統(tǒng)環(huán)境,同時(shí)在深度嵌入式處理上執(zhí)行軟件。手臂調(diào)試體系結(jié)構(gòu)規(guī)范允許將調(diào)試邏輯合并到Arm體系結(jié)構(gòu)中。 本指南介紹了調(diào)試,并介紹AArch
    發(fā)表于 08-02 10:05

    ARM通用中斷控制體系結(jié)構(gòu)規(guī)范GIC體系結(jié)構(gòu)版本3和版本4

    系統(tǒng)寄存器名稱,而不是同時(shí)列出AArch32和AArch64體系寄存器名稱。AArch64寄存器
    發(fā)表于 08-11 07:45

    AArch64平臺上性能下降的例子

    編者按:目前許多公司同時(shí)使用 x86 和 AArch64 2 種主流的服務(wù)。這兩種環(huán)境的算力相當(dāng),內(nèi)存相同的情況下:相同版本的 JVM 和 Java 應(yīng)用,相同的 JVM 參數(shù),應(yīng)用性
    的頭像 發(fā)表于 09-09 11:11 ?2409次閱讀

    kvm_arm64資料下載

    支持AArch64AArch32執(zhí)行狀態(tài) ■ 32-64位互通受限于異常邊界 ■ AArch64始終具有比AArch32更高的
    發(fā)表于 06-02 11:06 ?1次下載

    如何使用預(yù)裝程序創(chuàng)建并分發(fā)AArch64容器

    本文我們將探討如何使用預(yù)裝程序創(chuàng)建并分發(fā) AArch64 容器。
    的頭像 發(fā)表于 09-30 10:57 ?1206次閱讀

    剖析Armv8-A的AArch64寄存器

    根據(jù)指令使用數(shù)據(jù)的方式, 指令系統(tǒng)可分為堆棧型、累加型和寄存器型。寄存器型又可以進(jìn)一步分為寄存器-寄存器型和
    的頭像 發(fā)表于 01-30 16:45 ?2051次閱讀

    最新的Linux aarch64 LSA驅(qū)動(dòng)程序

    電子發(fā)燒友網(wǎng)站提供《最新的Linux aarch64 LSA驅(qū)動(dòng)程序.zip》資料免費(fèi)下載
    發(fā)表于 08-23 15:46 ?2次下載
    最新的Linux <b class='flag-5'>aarch64</b> LSA驅(qū)動(dòng)程序

    第四章:在 PC 交叉編譯 aarch64 的 tensorflow 開發(fā)環(huán)境并測試

    本文介紹了在 PC 端交叉編譯 aarch64 平臺的 tensorflow 庫而非 tensorflow lite 的心酸過程。
    的頭像 發(fā)表于 08-25 11:38 ?1022次閱讀
    第四章:在 PC 交叉編譯 <b class='flag-5'>aarch64</b> 的 tensorflow 開發(fā)環(huán)境并測試
    主站蜘蛛池模板: 久久精品中文闷骚内射| 亚洲精品在线观看视频| CHINESE熟女老女人HD视频| 噜噜噜狠狠夜夜躁| 22eee在线播放成人免费视频| 久久操热在线视频精品| 在线 | 果冻国产传媒61国产免费| 久久草香蕉频线观| 在线中文字幕亚洲日韩| 老师的玉足高跟鞋满足我| 97超碰免费人妻中文| 欧美高清videosgratis高| a久久99精品久久久久久蜜芽| 青青青青久久久久国产的| 成人短片迅雷下载| 涩涩网站在线看| 国产精品单位女同事在线| 幸福草电视剧演员表介绍| 国产真实露脸乱子伦| 一个人在线观看免费高清视频在线观看| 久久精品国产在热亚洲| 中文字幕AV在线一二三区| 女厕所边摸边吃奶边做爽视频| 白丝女仆被强扒内裤| 少妇高潮惨叫久久久久久电影| 国产人妻精品久久久久久很牛| 亚洲精品久久久WWW游戏好玩| 久99久热只有精品国产99| 1234成人网| 秋霞影院福利电影| 国产精品久久久久久52AVAV| 亚洲人成网站在线观看90影院| 九九色精品国偷自产视频| 97人妻精品全国免费视频| 日本无卡无吗在线| 国产午夜三级一区二区三 | 欧美精品华人在线| 风情韵味人妻HD| 亚洲成年人免费网站| 久久五月综合婷婷中文云霸高清| 99热这里只有 精品|