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

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

3天內不再提示

Cortex A9架構下為何使用結構體效率會更高一些

電子設計 ? 來源:電子設計 ? 作者:電子設計 ? 2020-12-24 12:51 ? 次閱讀

作為過來人,我發(fā)現(xiàn)很多程序猿新手,在編寫代碼的時候,特別喜歡定義很多獨立的全局變量,而不是把這些變量封裝到一個結構體中,主要原因是圖方便,但是要知道,這其實是一個不好的習慣,而且會降低整體代碼的性能。

另一方面,最近有幸與大神「公眾號:裸機思維」的傻孩子交流的時候,他聊到:“其實Cortex在架構層面就是更偏好面向對象的(哪怕你只是使用了結構體),其表現(xiàn)形式就是:「Cortex所有的尋址模式都是間接尋址」——換句話說「一定依賴一個寄存器作為基地址」。

舉例來說,同樣是訪問外設寄存器,過去在8位和16位機時代,人們喜歡給每一個寄存器都單獨綁定地址——當作全局變量來訪問,而現(xiàn)在Cortex在架構上更鼓勵底層驅動以寄存器頁(也就是結構體)為單位來定義寄存器,這也就是說,同一個外設的寄存器是借助擁有同一個基地址的結構體來訪問的。”

以Cortex A9架構為前提,下面一口君詳細給你解釋為什么使用結構體效率會更高一些。

一、全局變量代碼反匯編

1. 源文件

「gcd.s」

text
.global _start
_start:
ldr sp,=0x70000000 get stack top pointer
b main

「main.c」


* main.c

* Created on: 2020-12-12
* Author: pengdan

int xx=0;
int yy=0;
int zz=0;
int main(void)

xx=0x11;
yy=0x22;
zz=0x33;
while(1);
return 0;

「map.lds」

OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
OUTPUT_FORMAT("elf32-arm", "elf32-arm", "elf32-arm")
OUTPUT_ARCH(arm)
ENTRY(_start)
SECTIONS

. = 0x40008000;
. = ALIGN(4);
.text :

gcd.o(.text)
*(.text)

. = ALIGN(4);
.rodata :
{ *(.rodata) }
. = ALIGN(4);
.data :
{ *(.data) }
. = ALIGN(4);
.bss :
{ *(.bss) }

「Makefile」

TARGET=gcd
TARGETC=main
all:
arm-none-linux-gnueabi-gcc -O1 -g -c -o $(TARGETC).o $(TARGETC).c
arm-none-linux-gnueabi-gcc -O1 -g -c -o $(TARGET).o $(TARGET).s
arm-none-linux-gnueabi-gcc -O1 -g -S -o $(TARGETC).s $(TARGETC).c
arm-none-linux-gnueabi-ld $(TARGETC).o $(TARGET).o -Tmap.lds -o $(TARGET).elf
arm-none-linux-gnueabi-objcopy -O binary -S $(TARGET).elf $(TARGET).bin
arm-none-linux-gnueabi-objdump -D $(TARGET).elf > $(TARGET).dis
clean:
rm -rf *.o *.elf *.dis *.bin

【交叉編譯工具,自行搜索安裝】

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

    關注

    0

    文章

    391

    瀏覽量

    21289
  • Cortex
    +關注

    關注

    2

    文章

    202

    瀏覽量

    46512
  • ARM架構
    +關注

    關注

    14

    文章

    177

    瀏覽量

    36317
收藏 人收藏

    評論

    相關推薦

    Cortex-A55 處理器到底什么來頭?創(chuàng)龍教儀文帶您了解

    。 Cortex-A55:同樣支持多核配置,但通常會有更高的核心數(shù),如八核架構。在頻率方面,也根據(jù)具體實現(xiàn)有所不同。 國產Cortex-A
    發(fā)表于 12-03 17:00

    結構成員的順序影響結構的大小嗎

    相同的結構成員,如果把順序調整下,會不會影響結構的大小? 答案是的,這主要跟字節(jié)對齊有關
    的頭像 發(fā)表于 11-25 16:24 ?182次閱讀

    Arm Cortex-X925 樹立全新性能標桿,實現(xiàn)人工智能、游戲和多任務處理的先進功能

    Cortex-X925基于Armv9.2架構,樹立了CPU性能的全新標桿,實現(xiàn)了Cortex-X系列有史以來最大幅度的IPC同比提升。得益于最新的三納米工藝節(jié)點,Cortex-X925
    的頭像 發(fā)表于 10-08 12:43 ?291次閱讀
    Arm <b class='flag-5'>Cortex</b>-X925 樹立全新性能標桿,實現(xiàn)人工智能、游戲和多任務處理的先進功能

    iTOP-3562開發(fā)板/核心板采用RK3562,集成四核A53+Mali G52架構

    A53+Mali G52架構,主頻2GHZ,內置1TOPSNPU算力,RK809動態(tài)調頻。支持OpenGLES1.1/2.0/3.2、0penCL2.0、Vulkan 1.1內嵌高性能2D加速硬件
    發(fā)表于 09-05 11:30

    X86架構處理器有哪些優(yōu)點和缺點

    X86架構處理器作為計算機領域的重要組成部分,具有多個顯著的優(yōu)點和定的缺點。以下是對X86架構處理器優(yōu)缺點的詳細分析。
    的頭像 發(fā)表于 08-22 11:25 ?2166次閱讀

    X86架構和ARM架構有什么區(qū)別

    X86架構和ARM架構是兩種主流的CPU架構,它們在多個方面存在顯著的差異。以下是對這兩種架構的詳細比較,涵蓋了追求目標、應用領域、技術特點、性能功耗比、軟件生態(tài)以及未來趨勢等方面。
    的頭像 發(fā)表于 08-22 11:21 ?9343次閱讀

    ElfBoard技術貼|如何將libwebsockets庫編譯為x86架構

    和高效。通過在主機環(huán)境中編譯運用x86架構下的libwebsockets庫,可以充分利用主機卓越的計算性能與豐富的調試資源,顯著提升開發(fā)及調試工作的效率與便捷性。
    的頭像 發(fā)表于 07-10 09:38 ?1229次閱讀
    ElfBoard技術貼|如何將libwebsockets庫編譯為x86<b class='flag-5'>架構</b>

    迅為RK3562核心板四核A53+MaliG52架構,應用于商業(yè)平板電腦,視頻會議,智能家居,教育電子,醫(yī)療設備,邊緣計算,工業(yè)應用

    迅為RK3562核心板四核A53+MaliG52架構,應用于商業(yè)平板電腦,視頻會議,智能家居,教育電子,醫(yī)療設備,邊緣計算,工業(yè)應用
    發(fā)表于 07-09 10:57

    移動端芯片性能提升,Armv9架構新升級引發(fā)關注

    “數(shù)碼博主”5月17日的最新爆料指出,聯(lián)發(fā)科積極推進Armv9代IP BLACKHAWK“黑鷹”的架構設計,預計天璣9400芯片將采用這一架構,有望以“全大核”設計再度領跑移動So
    的頭像 發(fā)表于 05-17 16:51 ?1023次閱讀

    為何什么risc-v芯片比arm的效率

    RISC-V芯片在某些情況下可能相對于ARM架構芯片表現(xiàn)出更高效率,這主要得益于RISC-V設計的一些特點和優(yōu)勢。 首先,RISC-V指令集架構
    發(fā)表于 04-28 09:38

    鴻湖萬聯(lián)成功舉辦基于x86架構的OpenHarmony應用生態(tài)挑戰(zhàn)賽

    近日,由開放原子開源基金、央視網(wǎng)、江蘇省工業(yè)和信息化廳、無錫市人民政府、江蘇軟件產業(yè)人才發(fā)展基金、蘇州工業(yè)園區(qū)、無錫高新區(qū)等共同承辦,鴻湖萬聯(lián)參與共建的“基于x86架構的OpenHarmony應用生態(tài)挑戰(zhàn)賽”決賽路演在無錫圓
    的頭像 發(fā)表于 04-23 09:26 ?360次閱讀
    鴻湖萬聯(lián)成功舉辦基于x86<b class='flag-5'>架構</b>的OpenHarmony應用生態(tài)挑戰(zhàn)賽

    適用于ARM? Cortex?-A8/A9 SOC 和 FPGA 的TPS65218電源管理數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《適用于ARM? Cortex?-A8/A9 SOC 和 FPGA 的TPS65218電源管理數(shù)據(jù)表.pdf》資料免費下載
    發(fā)表于 03-06 14:18 ?0次下載
    適用于ARM? <b class='flag-5'>Cortex</b>?-<b class='flag-5'>A</b>8/<b class='flag-5'>A9</b> SOC 和 FPGA 的TPS65218電源管理數(shù)據(jù)表

    對于繪制USB DRP架構一些疑問求解

    我正在繪制新系統(tǒng)的架構,對此有一些疑問: 1) 通常左側板有 20V 固定電源,將通過 TypeC 端口向右板提供 20V。 a) Vbus 通過 Mosfets 直接連接到 20V,如果談判失敗
    發(fā)表于 02-23 06:31

    arm架構和x86架構區(qū)別 linux是x86還是arm

    ARM架構和x86架構是兩種不同的計算機處理器架構,它們在體系結構、指令集、應用領域等方面有著明顯的區(qū)別。Linux操作系統(tǒng)則具有廣泛的適配性,可以運行在各種
    的頭像 發(fā)表于 01-30 13:46 ?1.9w次閱讀

    Arm Cortex-M52的主要特性和規(guī)格

    Arm Cortex-M52是款采Arm Helium 技術的新型微控制器內核,旨在將AI功能引入更小、成本更低的物聯(lián)網(wǎng)設備,而不是基于Arm Cortex-M55內核的SoC,Arm Co
    的頭像 發(fā)表于 01-02 11:12 ?1505次閱讀
    Arm <b class='flag-5'>Cortex</b>-M52的主要特性和規(guī)格