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

上面的代码表示,在连续相连的地址上,依次放各中断服务函数指针

审核编辑:符乾江

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6002

    文章

    43990

    浏览量

    620954
  • GNU
    GNU
    +关注

    关注

    0

    文章

    141

    浏览量

    17336
收藏 人收藏

    评论

    相关推荐

    【RISC-V开放架构设计之道|阅读体验】汇编语言和扩展指令

    存储资源; 6)由于程序可从多处调用函数,故需将控制权返回到调用点(使用ret指令)。 汇编器支持很多伪指令: 链接器的作用是将多个汇编器输出的扩展名为o的文件和已有的机器码“拼接”
    发表于 02-03 13:29

    汇编指令是什么 计算机语言汇编指令简介

    汇编指令简介 汇编语言是计算机语言的一种,是一种低级语言。相比高级语言,汇编语言更接近底层硬件,使用更加直接,效率更高。但相对而言,汇编语言
    的头像 发表于 12-13 11:18 486次阅读
    <b class='flag-5'>汇编</b><b class='flag-5'>指令</b>是什么 计算机语言<b class='flag-5'>汇编</b><b class='flag-5'>指令</b>简介

    一文认识ARM汇编指令和体系架构

    STM32作为ARM核芯片广为人知,分享本文来了解下与之相关的ARM
    的头像 发表于 11-20 10:53 750次阅读
    一文认识<b class='flag-5'>ARM</b><b class='flag-5'>汇编</b><b class='flag-5'>指令</b>和体系架构

    讲讲ARM指令集格式以及常用的ARM汇编指令

    对于搞嵌入式驱动或者操作系统的人来说,掌握汇编语言的使用还是比较重要的,毕竟有时候在分析定位问题的时候,多多少少都会有汇编的身影。本文主要讲讲ARM指令集格式以及常用的
    的头像 发表于 11-08 12:34 1073次阅读
    讲讲<b class='flag-5'>ARM</b><b class='flag-5'>指令</b>集格式以及常用的<b class='flag-5'>ARM</b><b class='flag-5'>汇编</b><b class='flag-5'>指令</b>

    MCS51汇编中的DATA是伪指令吗?具体用法是什么?

    MCS51汇编中的DATA是伪指令吗?具体用法是什么?
    发表于 11-02 08:17

    如何在特权模式下用arm汇编指令使能和禁止irq中断?

    如何在特权模式下用arm汇编指令使能和禁止irq中断? 在 ARM 系统中,中断是非常常见的一种事件。在特权模式下,可以使用 ARM
    的头像 发表于 10-19 16:42 801次阅读

    ARM汇编指令:异常产生指令和伪代码

    。 2、【BKPT指令】 BKPT 16 位的立即数 BKPT指令产生软件断点中断,可用于程序的调试。 伪代码 1.【AREA】 一个汇编程序至少要包含一个段,当程序太长时,也可以将程序分为多个代码段和数
    的头像 发表于 10-07 14:29 538次阅读

    ARM汇编快速入门教程

    本文主要分享如何快速上手ARM汇编开发的经验、汇编开发中常见的Bug以及Debug方法、用的Convolution Dephtwise算子的汇编实现相对于C++版本的加速效果三方面内容
    发表于 08-25 10:19 627次阅读
    <b class='flag-5'>ARM</b><b class='flag-5'>汇编</b>快速入门教程

    RealView开发人员工具包汇编指南

    RVDK V2.2汇编器实现了汇编语言的实质性增强版本,同时继续支持旧版本以支持旧代码的汇编。 新版本可以组装成手臂或拇指指令。 新版本是支持Thumb®-2所必需的,Thumb®-2
    发表于 08-16 06:59

    关于NucleiStudio IDE编译汇编文件的问题

    关于NucleiStudio的使用,我想问两个问题,一个是NucleiStudio IDE编译汇编文件的问题,另一个是关于NucleiStudio IDE编译RISCV向量扩展指令的问题,我在百度
    发表于 08-12 08:05

    ARM汇编语言入门

    本指南介绍了使用A64指令集的Arm汇编语言的基本概念,向您展示了如何使用Arm Development Studio创建和运行汇编代码,并
    发表于 08-08 07:28

    Arm A64指令集体系结构

    指令集体系结构(ISA)是计算机抽象模型的一部分。它定义了软件控制处理器。 Arm ISA允许您编写符合Arm规范的软件和固件。 这意味着,如果您的软件或固件符合规范,任何基于arm
    发表于 08-02 06:33

    单片机汇编语言的结构/数据类型/汇编指令

    开发汇编语言是为了为机器级代码指令提供助记符或符号,汇编语言程序由助记符组成,因此应将它们翻译成机器代码。负责这种转换的程序称为汇编程序。汇编
    的头像 发表于 07-07 12:28 2024次阅读

    ARM汇编入门

    我们在学习ARM的时候,一般都不用看汇编启动代码,直接使用芯片厂商提供的汇编启动代码,但是要想深入了解ARM内部原理,就必须掌握一定的汇编
    的头像 发表于 06-10 14:00 3740次阅读
    <b class='flag-5'>ARM</b><b class='flag-5'>汇编</b>入门

    51单片机指令详解

    学习51汇编指令详解
    的头像 发表于 05-27 20:45 1w次阅读