簡體   English   中英

mrc p15在ARM內聯匯編中起什么作用,GNU C內聯asm語法如何工作?

[英]What does mrc p15 do in ARM inline assembly, and how does GNU C inline asm syntax work?

裝配臂中的這條線有什么作用?

mrc p15, 0, %0, c9, c13, 0" : : "r" (counter)

誰是p15是不是應該是r15其他的還有什么?

什么是::誰是c9, c1每個自變量的作用是什么?

MRC是通用協處理器互操作指令,而cp15控制處理器 -所有現代ARM CPU都擁有,而ARM已使用它是擴展片上單元(例如緩存)的指令集的一種方式, MMU,性能監控以及許多其他功能。

一次聽一下您的指示:

mrc p15, 0, %0, c9, c13, 0" : : "r" (counter)

根據《 ARM Cortex A7 MPCore參考》 ,指令格式為:

MRC{cond} P15, <Opcode_1>, <Rd>, <CRn>, <CRm>, <Opcode_2>

在第4-11頁上,這被描述為將CPU寄存器傳輸到性能監視器計數寄存器(我想count=0 ,這是性能計數器的復位)。

至於內聯匯編器的語法。 有關x86概述,請參考此內容 -可能與ARM類似。

: : "r" (counter)表示指令具有:

  • 寄存器中沒有需要以局部變量結尾的輸出
  • 從變量counter獲取輸入,並且該寄存器所在的寄存器應用作%0
  • 編譯器沒有應注意的副作用(clobbers)

與其他處理器相比,臂中的協處理器也許更明顯/可見。 不過,這是一個協處理器訪問功能,協處理器接口是通用的,這些指令是通用的,就像您只是在通用總線上填寫項目一樣。 現在,arm確實重用了一個協處理器,如果一個協處理器存在於另一個內核中,則協處理器會在另一個內核中互不相關或相同。 正確的答案是訪問arm網站(infocenter.arm.com),找到正在使用或查看代碼的處理器系列和內核的arm arm(手臂架構參考手冊)和trm(技術參考手冊)。因為,在一本或兩本手冊中,將有一個關於協處理器的部分,當您進入該部分時,您將看到協處理器編號,然后在該協處理器中進行注冊,並且其中一些編號是有意義的。 ARM通常會說,在這里讀取此寄存器是確切的指令,在這里寫入此寄存器是確切的指令,它將采用您介紹的形式。 如果您希望從代碼退回到它的功能,您會發現您可以非常快速地進入手冊的該部分並快速找到說明,然后查看其對特定內核或系列的作用。 另一種方法是查看章節標題,找到感興趣的寄存器,然后查找用於操縱該寄存器的指令的語法。

至於::雙冒號,我猜您是從內聯匯編中獲取的,它與內聯匯編有關,是編譯器,與arm指令完全無關,arm指令以c13,0結尾。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM