关于ARM汇编中使用宏定义的处理

发布者:灵感狂舞最新更新时间:2016-05-09 来源: eefocus关键字:ARM汇编  宏定义 手机看文章 扫描二维码
随时随地手机看文章
在ARM汇编中使用了#define 宏定义 arm-linux-as会报 Error: internal_relocation (type: OFFSET_IMM) not fixed up 错误.

可以先把.s文件改成.c 使用arm-linux-gcc -E 文件名 > 得到的处理好的宏定义的汇编文件.  再进行编译

关键字:ARM汇编  宏定义 引用地址:关于ARM汇编中使用宏定义的处理

上一篇:GUN ARM汇编中标号的引用在汇编和C语言中区别
下一篇:ARM汇编中B跳转指令和LDR跳转的区别

推荐阅读最新更新时间:2024-03-16 14:53

GNU ARM汇编--(六)s3c2440的时钟控制
前面几篇利用GNU ARM汇编控制LED以及ARM的中断处理的设计,对ARM汇编以及体系结构有了一定的认识.后面的汇编学习会结合具体的芯片进行,一个为了更灵活熟练的使用汇编,二也是为了通过学习一款具体芯片来提炼出一些有价值的经验.此次选择的芯片是三星的s3c2440,arm920t的核,整个板子是TQ2440的板子,这个板子放了两年多了,零散的玩过一些,但是为了建立更有体系的知识结构,还是值得把它玩过个遍.可能这个芯片很过时了,应该很多人在玩6410,在工作中接触的也是arm11Cortex-A9或者ppc,但是很多东西并不会过时的.虽然工作中接触的东西比较新,但是作为做应用的公司,很多底层的东西IC设计厂商都帮你做好了,你
[单片机]
GNU <font color='red'>ARM汇编</font>--(六)s3c2440的时钟控制
ARM汇编-ARM汇编中的LDR/STR
在ARM架构下, 数据从内存到CPU之间的移动只能通过LDR/STR指令来完成.而MOV只能在寄存器之间移动数据,或者把立即数移动到寄存器中,并且数据的长度不能超过8位 LDR,STR 的第一操作数是目标寄存器,第二操作数是内存地址, LDR 内存 -- 寄存器; STR 寄存器 -- 内存 内存的表示方式有:立即数,寄存器,或寄存器加偏移,立即数:内存的物理位置,前面加个#,如0x56000050 寄存器,加个 ,如 ,偏移的话 ,或者 , 等,都差不多,就是把寄存器里的数当成地址。 以下是具体的应用例子: 1. LDR r0,=label 用于加载立即数或一个地址值到指定寄存器中 1.1 如果label是立
[单片机]
ARM汇编语言学习笔记(二)跑个灯程序以及.s文件分析
一、汇编语言怎么写 我们都知道,c语言可以写成c语言然后编译。那么汇编语言了? 汇编语言用汇编语言写,然后写出来为.s文件。所以我们只需要任意一款可以编写.s文件的编辑器就可以啦,例如:source insight、notepad等。 二、写一个试试 /* * 点亮LED1: gpf4 */ .text .global _start _start: /* 配置GPF4为输出引脚 * 把0x100写到地址0x56000050 */ ldr r1, =0x56000050 ldr r0, =0x100 /* mov r0, #0x100 */ str r0, /* 设置GPF4输出
[单片机]
<font color='red'>ARM汇编</font>语言学习笔记(二)跑个灯程序以及.s文件分析
ARM汇编 MOV PC,LR
终于明白这个LR寄存器了 看下面这个ARM汇编吧 BL NEXT ;跳转到子程序 ......... ;NEXT处执行 NEXT .......... MOV PC,LR ;从子程序返回 这里的BL是跳转的意思,LR(R14)保存了返回地址 PC(R15)是当前地址,把LR给PC就是从子程序返回 这里有一下总结 首先 1.SP(R13) LR(R14)PC(R15) 2.lr(r14)的作用问题,这个lr一般来说有两个作用: 1》.当使用bl或者blx跳转到子过程的时候,r14保存了返回地址,可以在调用过程结
[单片机]
关于STM32定义的产品类型名称解释
startup_stm32f10x_ld_vl.s: for STM32 Low density Value line devices startup_stm32f10x_ld.s: for STM32 Low density devices startup_stm32f10x_md_vl.s: for STM32 Medium density Value line devices startup_stm32f10x_md.s: for STM32 Medium density devices startup_stm32f10x_hd.s: for STM32 High density devices startup_stm32f
[单片机]
GNU ARM汇编--(十四)GNU ARM汇编下做任务调度
以前工作中用过arm7,没有MMU,也没有用任何OS.现在回忆当时的代码结构,我觉得可以叫无限循环的有限状态机.arm7不跑OS,就相当于单片机,单片机跑的肯定是无限死循环.有限状态机是因为整个代码要处理很多外部的事情,那就是大的循环里面来套小循环,以轮询的方式来检查外界的变化,然后系统作出变化,系统在有限的状态中切换. OS的一个标识就是支持多任务的并发.比方说linux,我们看起来是多个进程在同时运行,实际上还是cpu运行一下这个进程,再运行一下其他进程.这个就涉及到上下文切换以及进程调度的算法.当然我这里说的是单核的情况,如果是SMP的话,可能有些区别.暂时也没研究linux下的进程调度,但是通过自己写个最简单
[单片机]
linux 下arm汇编语法
第一部分 Linux下ARM汇编语法 尽管在Linux下使用C或C++编写程序很方便,但汇编源程序用于系统最基本的初始化,如初始化堆栈指针、设置页表、操作ARM的协处理器等。初始化完成后就可以跳转到C代码执行。需要注意的是,GNU的汇编器遵循AT&T的汇编语法,可以从GNU的站点(www.gnu.org)上下载有关规范。 一. Linux汇编行结构 任何汇编行都是如下结构: ]] 每一个段以段名为开始, 以下一个段名或者文件结尾为结束。这些段都有缺省的标志(flags),连接器可以识别这些标志。(与armasm中的AREA相同)。 下面是ELF格式允许的段标志 标志 含义 a 允许段 w 可写段 x 执行段 定义段
[单片机]
ARM9学习3-调试第一个ARM汇编程序
调试第一个ARM汇编程序 1.双击KEIL uVision4图标,打开RVMDK uVision4集成开发环境。 2.通过菜单“projectnew uvision project…”,新建一个工程,选择要存放的位置和工程文件名“Test001”,点击“保存按钮”。 3.CPU选型,选择三星的S3C2410A,继续点击“OK”按钮。 4.不添加启动代码,所以选择“否” 5.点击工具栏上的“ ”New 图标,新建一个文件,键入汇编源代码。 6.点击工具栏上的“ ”Save 图标,保存该汇编源文件,命名为:Test001.s 7.在左边的“Project”目录结构中,右击“Source Group 1”,选择“
[单片机]
ARM9学习3-调试第一个<font color='red'>ARM汇编</font>程序
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved