91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

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

實(shí)例:

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

.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 ;聲明一個(gè) object 對(duì)象

.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

在當(dāng)前地址放一個(gè) 32bit 的值

g_pfnVectors: .word _estack

.word Reset_Handler

.word NMI_Handler

.word HardFault_Handler

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

審核編輯:符乾江

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

    關(guān)注

    6076

    文章

    45495

    瀏覽量

    670322
  • GNU
    GNU
    +關(guān)注

    關(guān)注

    0

    文章

    144

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    匯編程序段的定義介紹

    ; END偽指令標(biāo)志整個(gè)程序的結(jié)束。END語(yǔ)句下面書寫的任何代碼都不會(huì)被匯編。END后的標(biāo)號(hào)表示程序的入口地址,也就是匯編程序開始執(zhí)行的地方。 2 基本傳送指令 基本傳送
    發(fā)表于 11-21 08:19

    匯編語(yǔ)言的起源

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

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

    相對(duì)于抽象層次更高的C/C++語(yǔ)言,匯編語(yǔ)言是一門抽象層次比較低的語(yǔ)言,面向的是最底層的硬件,直接使用處理器的基本指令。雖然現(xiàn)在大多數(shù)的程序設(shè)計(jì)已經(jīng)不再使用匯編語(yǔ)言,但是在一些特殊的場(chǎng)合,譬如底層
    發(fā)表于 10-31 08:46

    簡(jiǎn)單的內(nèi)聯(lián)匯編介紹

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

    RISC-V的工具鏈GCC內(nèi)聯(lián)匯編

    具體實(shí)現(xiàn)方法和步驟 在RISC-V架構(gòu)中定義的CSR寄存器需要使用特殊的CSR指令進(jìn)行訪問,如果C、C++程序中需要訪問CSR寄存器,只能使用內(nèi)嵌匯編指令的方法。在C、C++程序中嵌入匯編
    發(fā)表于 10-30 06:59

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

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

    蜂鳥自定義指令軟件講解和內(nèi)聯(lián)匯編(一)

    為將緩存中的數(shù)據(jù)寫入內(nèi)存中;rowsum為累加指令,將結(jié)果寫回目的寄存器。 RISC-V架構(gòu)中的匯編代碼中用戶自定義指令需要通過偽指令.insn來實(shí)現(xiàn), 對(duì)于R類型
    發(fā)表于 10-24 10:51

    GCC內(nèi)聯(lián)匯編

    GCC內(nèi)聯(lián)匯編 在蜂鳥內(nèi)核的NICE協(xié)處理器擴(kuò)展demo的insn.h文件中存在下面一段指令,用于定義對(duì)協(xié)處理器調(diào)用指令,demo中協(xié)處理器支持三條指令:lbuf從內(nèi)存中l(wèi)oad數(shù)據(jù)
    發(fā)表于 10-24 07:46

    通過內(nèi)聯(lián)匯編調(diào)用乘法指令mulh\\mulhsu\\mulhu

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

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

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

    RISC-V指令集手冊(cè)中F指令部分

    單獨(dú)訪問,frrm/fsrm偽指令用于單獨(dú)訪問fcsr的frm域,frflags/fsflags偽指令可以單獨(dú)訪問fcsr的fflags域。fcsr中31-8位進(jìn)行保留,以便后續(xù)擴(kuò)展,7-5位為舍入模式
    發(fā)表于 10-22 08:18

    Whetstone代碼涉及的浮點(diǎn)指令匯編分析

    對(duì)benchmark中的whetstone進(jìn)行代碼分析,通過反匯編統(tǒng)計(jì)所出現(xiàn)的浮點(diǎn)指令,共有26種,如下 特點(diǎn)是只涉及單精度的浮點(diǎn)指令,并且存在有浮點(diǎn)Load/Store的壓縮指令,
    發(fā)表于 10-22 08:11

    gcc工具鏈無法匯編硬件浮點(diǎn)指令fsqrt問題

    團(tuán)隊(duì)在項(xiàng)目推進(jìn)過程中發(fā)現(xiàn),Linux環(huán)境下,math庫(kù)中的sqrt()函數(shù)無論是在浮點(diǎn)數(shù)的gcc工具鏈中還是整數(shù)的gcc工具鏈中,綜合的結(jié)果都是以整數(shù)指令來模擬。 若果想要進(jìn)一步地節(jié)約時(shí)間,我們
    發(fā)表于 10-20 06:19

    ARM入門學(xué)習(xí)方法分享

    )架構(gòu)。學(xué)習(xí)ARM的開始可以從學(xué)習(xí)RISC和CISC架構(gòu)的基礎(chǔ)知識(shí)開始。 二、學(xué)習(xí)匯編語(yǔ)言:ARM架構(gòu)的核心是匯編語(yǔ)言。學(xué)習(xí)匯編語(yǔ)言能夠幫
    發(fā)表于 07-23 10:21

    第八章 啟動(dòng)文件詳解

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