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

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

审核编辑:符乾江

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

    关注

    6036

    文章

    44557

    浏览量

    635130
  • GNU
    GNU
    +关注

    关注

    0

    文章

    143

    浏览量

    17492
收藏 人收藏

    评论

    相关推荐

    一文详解Arm架构Armv9.6-A中的最新功能

    Arm CPU 是当今人工智能 (AI) 赋能软件的关键,它可解释、处理和执行指令Arm 指令集架构 (ISA) 作为硬件和软件的接口,指示处理器做什么和怎么做。
    的头像 发表于 12-17 10:22 956次阅读
    一文<b class='flag-5'>详解</b><b class='flag-5'>Arm</b>架构Armv9.6-A中的最新功能

    了解和使用GNU Radio软件的功能并制作蓝牙抓包器

    背景 在上一小节中,我们简单介绍和使用了GNU Radio软件的基础功能和模块,同时通过GNU Radio Companion(GRC)创建了简单的流程图,展示了信号生成、处理和输出的流程。最后通过
    的头像 发表于 11-15 16:10 475次阅读
    了解和使用<b class='flag-5'>GNU</b> Radio软件的功能并制作蓝牙抓包器

    ARM汇编语言工具

    电子发烧友网站提供《ARM汇编语言工具.pdf》资料免费下载
    发表于 11-06 09:12 0次下载
    <b class='flag-5'>ARM</b><b class='flag-5'>汇编</b>语言工具

    GNU构建裸机系统

    基于AT91SAM7S平台,介绍裸机开发,以闪灯为蓝本,涉及汇编、链接、C/C++、中断等。   无处不在的ARM处理器家族得到了GNU C/C++工具链的良好支持。虽然许多在线和印刷资源关注
    发表于 10-16 17:34 0次下载

    RISC-V和arm指令集的对比分析

    RISC-V和ARM指令集是两种不同的计算机指令集架构,它们在多个方面存在显著的差异。以下是对这两种指令集的详细对比分析: 一、设计理念 RISC-V :RISC-V的设计理念是简化
    发表于 09-28 11:05

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

    ARM处理器的指令集是一个庞大而复杂的系统,它涵盖了多种类型的指令,用于实现数据处理、程序控制、内存访问等多种功能。
    的头像 发表于 09-10 11:15 553次阅读

    RISC-V汇编语言

    汇编程序员或者编译器的编写者来说通常很有用。这类指令在巧妙配置常规指令的基础上实现,称为伪指令。上面两张图中列出了 RISC-V伪指令,前
    发表于 08-19 18:07

    RV32I 基本整数指令集(2.0版本)简介

    ,rs1汇编语言伪指令。SLTI(set less than immediate)将数值1放到寄存器rd中,如果寄存器rs1小于符号扩展的立即数(比较时,两者都作为有符号数),否则将0写入rd。SLTIU
    发表于 06-24 17:27

    三菱plc常用指令使用详解

    特点。本文将详细介绍三菱PLC的常用指令及其使用方法。 基本指令 1.1. LD(Load,装载)指令 LD指令用于将输入信号加载到PLC内部的存储器中。其基本格式为: LD X0 其
    的头像 发表于 06-20 10:45 6233次阅读

    abb机器人编程指令详解中的call什么意思

    ABB机器人编程指令详解中的“call”是一个非常重要的指令,它允许程序员在程序中调用另一个程序或子程序。 概述 在ABB机器人编程中,程序是由一系列的指令组成的,这些
    的头像 发表于 06-17 09:47 1138次阅读

    RISC-V 指令概况

    , sp, framesize ret 伪指令:不是真的机器指令,会被汇编器翻译为真实的物理指令。 例如: ret 被汇编为:jalr x0
    发表于 06-11 05:05

    GNU make中文手册

    电子发烧友网站提供《GNU make中文手册.pdf》资料免费下载
    发表于 06-05 13:22 0次下载

    求分享esp8266和esp32的汇编指令集?

    想做操作系统移植,可是没有在网上任何地方找到汇编指令集和寄存器说明,能否出一个?或者告诉我在那里找
    发表于 06-05 06:20

    软件无线电安全之GNU Radio基础知识

    GNU Radio是一款开源的软件工具集,专注于软件定义无线电(SDR)系统的设计和实现。该工具集支持多种SDR硬件平台,包括USRP、HackRF One和RTL-SDR等。用户可以通过GNU
    的头像 发表于 02-25 10:20 4649次阅读
    软件无线电安全之<b class='flag-5'>GNU</b> Radio基础知识

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

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