ARM APCS 學習筆記

2021-09-17 06:53:02 字數 1808 閱讀 8723

最近在學習arm體系架構,先簡單了解一下apcs。

什麼是apcs?

具體的概念隨後理解下,先提供乙個彙編和反彙編的方法,以供實驗。之後會詳細寫apcs的東西。

獲取arm gnu工具鏈之後,我們寫乙個簡單的c**。

int func0(int x)

void main()

然後執行: arm-none-eabi-gcc -mcpu=cortex-m3 -mthumb hello.c -nostartfiles -o hello.o

這時會生成hello.o,我們再反彙編一下:

arm-none-eabi-objdump -s hello.o > hello.s

hello.s:

hello.o:     file format elf32-littlearm

disassembly of section .text:

00008000 :

8000: b480 push

8002: b083 sub sp, #12

8004: af00 add r7, sp, #0

8006: 6078 str r0, [r7, #4]

8008: 687b ldr r3, [r7, #4]

800a: 1c5a adds r2, r3, #1

800c: 607a str r2, [r7, #4]

800e: 4618 mov r0, r3

8010: 370c adds r7, #12

8012: 46bd mov sp, r7

8014: bc80 pop

8016: 4770 bx lr

00008018 :

8018: b580 push

801a: b082 sub sp, #8

801c: af00 add r7, sp, #0

801e: 2309 movs r3, #9

8020: 607b str r3, [r7, #4]

8022: 6878 ldr r0, [r7, #4]

8024: f7ff ffec bl 8000 8028: 6078 str r0, [r7, #4]

802a: bf00 nop

802c: 3708 adds r7, #8

802e: 46bd mov sp, r7

8030: bd80 pop

8032: bf00 nop

~

下面的文章以hello.s來分析apcs,未完待續!

學習筆記 雜湊學習筆記

hash基本原理 hash就是乙個像函式一樣的東西,你放進去乙個值,它給你輸出來乙個值。輸出的值就是hash值。一般hash值會比原來的值更好儲存 更小 或比較。那字串hash就非常好理解了。就是把字串轉換成乙個整數的函式。而且要盡量做到使字串對應唯一的hash值。它的主要思路是選取恰當的進製,可以...

學習筆記 CentOS 學習筆記01

簡單的做個課堂筆記 虛擬機器用的是vmware,系統是centos cd etc sysconfig network scripts pwdls 顯示列表 cat ifcfg eth0 檢視檔案內容 vi ifcfg eth0 進入vi編輯器 onboot no 原始設定 x逐字刪除 d刪除整行 a...

筆記 spring cloud 學習筆記

1 spring cloud 是什麼 spring cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具 例如配置管理,服務發現,斷路器,智慧型路由,微 控制匯流排 分布式系統的協調導致了樣板模式,使用spring cloud開發人員可以快速地支援實現這些模式的服務和應用程式。他們將在任...