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

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

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

GNU arm 匯編偽指令詳解

林曉東 ? 來(lái)源:愛(ài)你沒(méi)話(huà)說(shuō) ? 作者:愛(ài)你沒(méi)話(huà)說(shuō) ? 2022-06-18 09:51 ? 次閱讀

所有的偽指令都是以 . 開(kāi)頭命令,然后剩下的命名通常是小寫(xiě)字母,比如 .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"段, 該段具有可分配和可寫(xiě)屬性,該段不包含數(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可見(jiàn)。

.word

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

g_pfnVectors: .word _estack

.word Reset_Handler

.word NMI_Handler

.word HardFault_Handler

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

審核編輯:符乾江

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

    關(guān)注

    6040

    文章

    44594

    瀏覽量

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

    關(guān)注

    0

    文章

    143

    瀏覽量

    17517
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    RISC-V基礎(chǔ)指令詳解

    RISC-V中定義了六種指令類(lèi)型,其中包括 R型指令 : 用于寄存器與寄存器之間算數(shù)運(yùn)算的指令 I型指令 : 用于寄存器和立即數(shù)算術(shù)運(yùn)算和讀存儲(chǔ)器操作的
    發(fā)表于 12-29 18:47

    一文詳解Arm架構(gòu)Armv9.6-A中的最新功能

    Arm CPU 是當(dāng)今人工智能 (AI) 賦能軟件的關(guān)鍵,它可解釋、處理和執(zhí)行指令。Arm 指令集架構(gòu) (ISA) 作為硬件和軟件的接口,指示處理器做什么和怎么做。
    的頭像 發(fā)表于 12-17 10:22 ?1664次閱讀
    一文<b class='flag-5'>詳解</b><b class='flag-5'>Arm</b>架構(gòu)Armv9.6-A中的最新功能

    ARM匯編語(yǔ)言工具

    電子發(fā)燒友網(wǎng)站提供《ARM匯編語(yǔ)言工具.pdf》資料免費(fèi)下載
    發(fā)表于 11-06 09:12 ?0次下載
    <b class='flag-5'>ARM</b><b class='flag-5'>匯編</b>語(yǔ)言工具

    GNU構(gòu)建裸機(jī)系統(tǒng)

    基于AT91SAM7S平臺(tái),介紹裸機(jī)開(kāi)發(fā),以閃燈為藍(lán)本,涉及匯編、鏈接、C/C++、中斷等。   無(wú)處不在的ARM處理器家族得到了GNU C/C++工具鏈的良好支持。雖然許多在線(xiàn)和印刷資源關(guān)注
    發(fā)表于 10-16 17:34 ?0次下載

    RISC-V和arm指令集的對(duì)比分析

    RISC-V和ARM指令集是兩種不同的計(jì)算機(jī)指令集架構(gòu),它們?cè)诙鄠€(gè)方面存在顯著的差異。以下是對(duì)這兩種指令集的詳細(xì)對(duì)比分析: 一、設(shè)計(jì)理念 RISC-V :RISC-V的設(shè)計(jì)理念是簡(jiǎn)化
    發(fā)表于 09-28 11:05

    ARM處理器的指令集包括哪些

    ARM處理器的指令集是一個(gè)龐大而復(fù)雜的系統(tǒng),它涵蓋了多種類(lèi)型的指令,用于實(shí)現(xiàn)數(shù)據(jù)處理、程序控制、內(nèi)存訪問(wèn)等多種功能。
    的頭像 發(fā)表于 09-10 11:15 ?631次閱讀

    RISC-V匯編語(yǔ)言

    對(duì)匯編程序員或者編譯器的編寫(xiě)者來(lái)說(shuō)通常很有用。這類(lèi)指令在巧妙配置常規(guī)指令的基礎(chǔ)上實(shí)現(xiàn),稱(chēng)為偽指令。上面兩張圖中列出了 RISC-V偽指令,前
    發(fā)表于 08-19 18:07

    RV32I 基本整數(shù)指令集(2.0版本)簡(jiǎn)介

    ,rs1匯編語(yǔ)言偽指令。SLTI(set less than immediate)將數(shù)值1放到寄存器rd中,如果寄存器rs1小于符號(hào)擴(kuò)展的立即數(shù)(比較時(shí),兩者都作為有符號(hào)數(shù)),否則將0寫(xiě)入rd。SLTIU
    發(fā)表于 06-24 17:27

    三菱plc常用指令使用詳解

    特點(diǎn)。本文將詳細(xì)介紹三菱PLC的常用指令及其使用方法。 基本指令 1.1. LD(Load,裝載)指令 LD指令用于將輸入信號(hào)加載到PLC內(nèi)部的存儲(chǔ)器中。其基本格式為: LD X0 其
    的頭像 發(fā)表于 06-20 10:45 ?6656次閱讀

    abb機(jī)器人編程指令詳解中的call什么意思

    ABB機(jī)器人編程指令詳解中的“call”是一個(gè)非常重要的指令,它允許程序員在程序中調(diào)用另一個(gè)程序或子程序。 概述 在ABB機(jī)器人編程中,程序是由一系列的指令組成的,這些
    的頭像 發(fā)表于 06-17 09:47 ?1209次閱讀

    RISC-V 指令概況

    , sp, framesize ret 偽指令:不是真的機(jī)器指令,會(huì)被匯編器翻譯為真實(shí)的物理指令。 例如: ret 被匯編為:jalr x0
    發(fā)表于 06-11 05:05

    GNU make中文手冊(cè)

    電子發(fā)燒友網(wǎng)站提供《GNU make中文手冊(cè).pdf》資料免費(fèi)下載
    發(fā)表于 06-05 13:22 ?0次下載

    求分享esp8266和esp32的匯編指令集?

    想做操作系統(tǒng)移植,可是沒(méi)有在網(wǎng)上任何地方找到匯編指令集和寄存器說(shuō)明,能否出一個(gè)?或者告訴我在那里找
    發(fā)表于 06-05 06:20

    軟件無(wú)線(xiàn)電安全之GNU Radio基礎(chǔ)知識(shí)

    GNU Radio是一款開(kāi)源的軟件工具集,專(zhuān)注于軟件定義無(wú)線(xiàn)電(SDR)系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)。該工具集支持多種SDR硬件平臺(tái),包括USRP、HackRF One和RTL-SDR等。用戶(hù)可以通過(guò)GNU
    的頭像 發(fā)表于 02-25 10:20 ?4911次閱讀
    軟件無(wú)線(xiàn)電安全之<b class='flag-5'>GNU</b> Radio基礎(chǔ)知識(shí)

    【RISC-V開(kāi)放架構(gòu)設(shè)計(jì)之道|閱讀體驗(yàn)】匯編語(yǔ)言和擴(kuò)展指令

    存儲(chǔ)資源; 6)由于程序可從多處調(diào)用函數(shù),故需將控制權(quán)返回到調(diào)用點(diǎn)(使用ret指令)。 匯編器支持很多偽指令: 鏈接器的作用是將多個(gè)匯編器輸出的擴(kuò)展名為o的文件和已有的機(jī)器碼“拼接”
    發(fā)表于 02-03 13:29