国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

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

3天內不再提示

GNU arm 匯編偽指令詳解

林曉東 ? 來源:愛你沒話說 ? 作者:愛你沒話說 ? 2022-06-18 09:51 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

所有的偽指令都是以 . 開頭命令,然后剩下的命名通常是小寫字母,比如 .section .type

.section

格式:.section name [, "flags "[, %type [,flag_specific_arguments ]]]

flags:

The optional flags argument is a quoted string which may contain any combination ofthe following characters:

a section is allocatable
w section is writable
x section is executable
M section is mergeable
S section contains zero terminated strings
G section is a member of a section group
T section is used for thread-local-storage

type:

The optional type argument may contain one of the following constants:

progbits:section contains data

nobits: section does not contain data (i.e., section only occupies space)

note: section contains data which is used by things other than the program

init_array:section contains an array of pointers to init functions

fini_array:section contains an array of pointers to finish functions

preinit_array:section contains an array of pointers to pre-init functions

實例:

.section .stack, "aw", %nobits /* 命名一個”.stack"段, 該段具有可分配和可寫屬性,該段不包含數據,該段用于保存堆棧值 */

.size

格式:.size name , expression

This directive sets the size associated with a symbol name. The size in bytes is computedfrom expression which can make use of label arithmetic. This directive is typically used toset the size of function symbols.

.type

This directive is used to set the type of a symbol.

格式有多種形式,如下:

.type STT_
.type ,#
.type ,@
.type ,@
.type ,%
.type ,""

The types supported are:

STT_FUNC

function

Mark the symbol as being a function name.

STT_GNU_IFUNC

gnu_indirect_function

Mark the symbol as an indirect function when evaluated during reloc processing.
(This is only supported on Linux targeted assemblers).

STT_OBJECT

object

Mark the symbol as being a data object.

STT_TLS

tls_object

Mark the symbol as being a thead-local data object.

STT_COMMON

common

Mark the symbol as being a common data object.

STT_NOTYPE

notype

Does not mark the symbol in any way. It is supported just for completeness.

例子1

.section .text.Reset_Handler
.type Reset_Handler, %function Reset_Handler:

ldr sp, =_estack /* set stack pointer */

bl entry

bx lr

.size Reset_Handler, .-Reset_Handler

例子2

.section .text.Reset_Handler
.type Reset_Handler, STT_FUNC Reset_Handler:

ldr sp, =_estack /* set stack pointer */

bl entry

bx lr

.size Reset_Handler, .-Reset_Handler

例子3

.global g_pfnVectors .section

.isr_vector,"a",%progbits

.type g_pfnVectors, %object ;聲明一個 object 對象

.size g_pfnVectors, .-g_pfnVectors

g_pfnVectors: .word _estack

.word Reset_Handler

.word NMI_Handler

.word HardFault_Handler

.word MemManage_Handler

.word BusFault_Handler

.word UsageFault_Handler

.global

.global makes the symbol visible to ld. If you define symbol in your partial program, itsvalue is made available to other partial programs that are linked with it. Otherwise, symboltakes its attributes from a symbol of the same name from another file linked into the sameprogram.

.global 用于聲明全局變量,是其讓ld可見。

.word

在當前地址放一個 32bit 的值

g_pfnVectors: .word _estack

.word Reset_Handler

.word NMI_Handler

.word HardFault_Handler

上面的代碼表示,在連續相連的地址上,依次放各中斷服務函數指針

審核編輯:符乾江

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

    關注

    6074

    文章

    45368

    瀏覽量

    664620
  • GNU
    GNU
    +關注

    關注

    0

    文章

    144

    瀏覽量

    18248
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    匯編程序段的定義介紹

    ; END偽指令標志整個程序的結束。END語句下面書寫的任何代碼都不會被匯編。END后的標號表示程序的入口地址,也就是匯編程序開始執行的地方。 2 基本傳送指令 基本傳送
    發表于 11-21 08:19

    匯編語言的起源

    一、匯編語言是什么? 我們知道,CPU 只負責計算,本身不具備智能。你輸入一條指令(instruction),它就運行一次,然后停下來,等待下一條指令。 這些指令都是二進制的,稱為操
    發表于 11-20 07:19

    RVMCU課堂「7」: 手把手教你玩轉RVSTAR—匯編程序篇

    相對于抽象層次更高的C/C++語言,匯編語言是一門抽象層次比較低的語言,面向的是最底層的硬件,直接使用處理器的基本指令。雖然現在大多數的程序設計已經不再使用匯編語言,但是在一些特殊的場合,譬如底層
    發表于 10-31 08:46

    簡單的內聯匯編介紹

    前言1、在程序中我們可以嵌入匯編直接對我們加入的硬件進行相應的操作 2、在RISC-V架構中定義的CSR寄存器需要使用特殊的 CSR 指令進行訪問,如果在 C/C++程序中需要使用 CSR 寄存器
    發表于 10-30 08:04

    RISC-V的工具鏈GCC內聯匯編

    具體實現方法和步驟 在RISC-V架構中定義的CSR寄存器需要使用特殊的CSR指令進行訪問,如果C、C++程序中需要訪問CSR寄存器,只能使用內嵌匯編指令的方法。在C、C++程序中嵌入匯編
    發表于 10-30 06:59

    采用匯編指示符來使用自定義指令

    、采用.insn匯編指示符實現risc-v自定義指令。這種方式可以指定工具來選擇寄存器,也可以自己選定寄存器。指令格式如下(引自gnu 匯編
    發表于 10-28 06:02

    蜂鳥自定義指令軟件講解和內聯匯編(一)

    為將緩存中的數據寫入內存中;rowsum為累加指令,將結果寫回目的寄存器。 RISC-V架構中的匯編代碼中用戶自定義指令需要通過偽指令.insn來實現, 對于R類型
    發表于 10-24 10:51

    GCC內聯匯編

    GCC內聯匯編 在蜂鳥內核的NICE協處理器擴展demo的insn.h文件中存在下面一段指令,用于定義對協處理器調用指令,demo中協處理器支持三條指令:lbuf從內存中load數據
    發表于 10-24 07:46

    通過內聯匯編調用乘法指令mulh\\mulhsu\\mulhu

    1.蜂鳥E203內核支持的乘法指令有四種(不含融合指令),分別為mul、mulh、mulhu與mulhsu。它們的匯編語言格式如下: mulrd,rs1, rs2 將兩個32位整數相乘,取低
    發表于 10-24 06:52

    NucleiStudio如何生成.verilog文件和.dasm文件,以及對.dasm文件中自定義指令匯編結果分析

    文件,以及對.dasm文件中自定義指令匯編結果分析。 一、如何生成.verilog和.dasm文件文件 項目右鍵選擇Properties 選擇C/C++ Build下面的Setting 更改
    發表于 10-24 06:33

    RISC-V指令集手冊中F指令部分

    單獨訪問,frrm/fsrm偽指令用于單獨訪問fcsr的frm域,frflags/fsflags偽指令可以單獨訪問fcsr的fflags域。fcsr中31-8位進行保留,以便后續擴展,7-5位為舍入模式
    發表于 10-22 08:18

    Whetstone代碼涉及的浮點指令匯編分析

    對benchmark中的whetstone進行代碼分析,通過反匯編統計所出現的浮點指令,共有26種,如下 特點是只涉及單精度的浮點指令,并且存在有浮點Load/Store的壓縮指令
    發表于 10-22 08:11

    gcc工具鏈無法匯編硬件浮點指令fsqrt問題

    團隊在項目推進過程中發現,Linux環境下,math庫中的sqrt()函數無論是在浮點數的gcc工具鏈中還是整數的gcc工具鏈中,綜合的結果都是以整數指令來模擬。 若果想要進一步地節約時間,我們
    發表于 10-20 06:19

    ARM入門學習方法分享

    )架構。學習ARM的開始可以從學習RISC和CISC架構的基礎知識開始。 二、學習匯編語言:ARM架構的核心是匯編語言。學習匯編語言能夠幫
    發表于 07-23 10:21

    第八章 啟動文件詳解

    本章講解了W55MH32的啟動文件,其由匯編編寫,系統上電后首執行,完成初始化堆棧、中斷向量表、配置系統時鐘等工作,還介紹了常用ARM匯編指令及代碼結構。
    的頭像 發表于 05-22 16:52 ?1949次閱讀
    第八章 啟動文件<b class='flag-5'>詳解</b>