ARM程序编写笔记

发布者:WhisperingRain最新更新时间:2019-11-20 来源: 51hei关键字:ARM  程序编写  汇编程序 手机看文章 扫描二维码
随时随地手机看文章

#include"stdio.h"
#include"limits.h"
#include"time.h" 
#include
#include"math.h"
#include
#include"rt_misc.h"
#include
#include

在C语言中嵌入汇编程序,用__asm,asm前是两个下滑杠,汇编语言在其后的大括号实体中写出,例如:在C语言中定义一个整型f函数,自变量为整型x,则可按下列规格编写
                      int f(int x)
                          {
                               int r0;
                                __asm
                                    {
                                         ADD r0,x,1
                                 EOR x,r0,x
                                     }
                                 return x;
                             } 
函数名后加 __pure:为了通知编译器这是一个纯函数,在申明时需要将该函数定义为 __pure 。
                       int f(int x)__pure 
                          {
                               int r0;
                                __asm
                                    {
                                         ADD r0,x,1
                                 EOR x,r0,x
                                     }
                                 return x;
                             } 
////////////////////////////////////////////////////////////////////////////
Thumb状态编译C或C++时,内联汇编程序不编译,且自动切换到ARM状态,如果要在Thumb状态内编译汇编指令到代码中,需要将含有汇编指令的函数包含在
#pragma arm  和#pragma thumb之间。   
#pragma arm
   int add(int i,int j)
   {
     int res;
__asm
{
   ADD res,i,j
}
return res;
   } 
#pragma thumb 
需要注意的是,内连汇编不支持以下汇编指令
svc,
LDR Rn  ,  =expression伪指令,可用MOV Rn, expression代替
LDRT,LDRBT, STRT  ,STRBT
MUL,MLA,UMULL,SMULL,SMLAL
MOV 或MVN标志设定指令(当第二操作数为常数)
用户模式LDM指令
ADR和ADRL伪指令
====================================
嵌入C程序中的汇编函数如果想访问C中的常量表达式,可用__cpp关键字。例如
   mov   r0,#__cpp(expr)
例如  mov   r0,#__cpp(res)
         LDR  r1,=__cpp(res)
         BL  __cpp(res)

关键字:ARM  程序编写  汇编程序 引用地址:ARM程序编写笔记

上一篇:为你解颇ARM异常中断返回的几种情况
下一篇:ARM入门学习指导

推荐阅读最新更新时间:2024-11-13 12:48

高通宣布2023年推出下一代Arm处理器:由苹果前员工负责开发
高通正寻求认真加强其 PC 处理器,昨晚宣布了下一代基于 Arm 的处理器计划,“旨在为 Windows PC 设定性能基准”,将能够与苹果的 M 系列处理器并驾齐驱。    高通首席技术官 James Thompson 博士在公司 2021 年投资者大会上宣布了新处理器的计划,目标是在 2023 年推出,推出前九个月内向硬件客户提供样品。 据 The Verge 报道,新处理器将由 Nuvia 团队设计,高通今年早些时候以 14 亿美元的巨额收购收购了该团队。值得注意的是,Nuvia 是由三位前苹果员工于 2019 年创立的,他们之前为苹果的 A 系列处理器工作过。    高通也做出了重大承诺:除了与苹果一流的 M 系列处
[半导体设计/制造]
高通宣布2023年推出下一代<font color='red'>Arm</font>处理器:由苹果前员工负责开发
基于ARM7及GPRS的路灯监控通信系统终端
0 引言 对于城市路灯管理部门来说,防盗、节能等一直是一件非常头疼的事情,需要投入大量的人力、物力和财力,因为路灯数量众多,地理位置分散,给工作人员带来极大的困难。GPRS即通用分组无线业务 ,英文全称为General Packet Radio Service,这种无线业务是在现有GSM网络上开通的一种新型的分组数据传输业务。GPRS采用分组交换技术,它可以让多个用户共享某些固定的信道资源。GPRS特别适用于间断的、突发性的或频繁的、少量的数据传输,也适用于偶尔的大数据量传输,具有实时在线、按量计费、快捷登录、高速传输、自如切换等优点。因此,利用GPRS组建的无线通信系统是一种造价低,易于维护和推广,无制约,可靠性高,稳定性好,具
[单片机]
基于<font color='red'>ARM</font>7及GPRS的路灯监控通信系统终端
基于ARM+FPGA架构的三维图形加速系统
引言 在传统的嵌入式系统上,三维图形处理通常由嵌入式CPU独自在软件上完成。但随着三维图形应用程序功能的不断强大,面对图形处理的巨额运算量,CPU变得不堪重负。此时,需要使用特定的硬件设备来为嵌入式CPU承担图形处理的任务。 具有三维图形硬件加速能力的ARM+FPGA架构嵌入式图形系统就是其中一种解决方案。其中,ARM处理器负责运行嵌入式操作系统、执行上层图形应用程序,而三维图形处理所需的大量运算则由FPGA实现的GPU(图形处理单元)进行。 图形API简介 在图形系统中预先定义了一组图形API,作为一个抽象层将图形应用程序和图形系统的具体实现隔离开来。具体的图形应用程序都将通过这些图形API来完成所有与绘制图
[单片机]
基于<font color='red'>ARM</font>+FPGA架构的三维图形加速系统
西门子1200PLC连续控制程序编写
我们一起学习的是连续控制程序编写。编写程序前,我们首先要做的是创建项目,添加设备,保存工程,在默认变量表里填入名称地址等,打开“PLC程序”中的“Main ”中进行编程。 具体程序看下图: 当我们正转启动I0.0动作时,先会断开I0.0的常闭触点,如果这个时候反转线圈Q0.1在输出的话,会使反转线圈Q0.1停止输出。然后导通常开触点(所有的元器件都一样:先是常闭触头断开,再是常开触头闭合,中间有一个时间差),使正转输出线圈Q0.0输出,Q0.0常闭触头断开形成联锁,Q0.0常开自锁触头闭合自锁。动作反转启动I0.2与I0.0正好相反。 注意:在程序中我们不能双线圈输出,就是说如果已经有一个Q0.0的线圈了,就不能在程序中出
[嵌入式]
西门子1200PLC连续控制<font color='red'>程序</font><font color='red'>编写</font>
基于ARM的可拆卸2-in-1平板电脑会在2022年占市场的一半
可拆卸2-in-1电脑在2018年已占有超过40%的市场份额,预计到2022年将再增加5个百分点。平板电脑市场的增长将取决于厂商是否可以通过降低可拆卸2-in-1电脑的价格从而获得更广泛的受众,而Strategy Analytics表示,新的处理器技术对于实现这一目标至关重要。 ARM和高通正在努力实现这一目标,但如果没有更强大的营销支持,更好的解决兼容性问题以及更加一致的分销策略,基于ARM的可拆卸2-in-1电脑将在2022年仅占市场的一半。 Strategy AnalyTIcs联网计算服务总监Eric Smith表示:“我们对于现在种下的种子将在长期内取得成果持谨慎乐观的态度,但还有许多其他不确定因素可以支持该增长。 一
[嵌入式]
基于<font color='red'>ARM</font>的可拆卸2-in-1平板电脑会在2022年占市场的一半
嵌入式调试ARM程序跑飞现象的跟踪
最近在调试2410的过程中,经常出现程序跑飞的现象,跟踪进行后发现。。。所以决定把它记录下来。 现象: 调试用的是技创ARM仿真器(兼容multi-ICE)和ADS1.2,板子外扩NandFLASH(装有Bootload)和SDRAM。当将程序烧到FLASH运行时会出现无规律的死机。用仿真器仿真时情况是这样:当CPU复位后,第一次装载程序执行时,情况与烧到FLASH运行时一样。但如果将运行的程序停下来(无论有无跑飞情况下),再重新装载(CPU复位后第二次及以后装载)时,运行到下述程序中的“msr cpsr_cxsf,r1”就跑飞。 bic r0,r0,#MODEMASK | NOINT ;IRQ、FIQ位清0
[单片机]
ARM 中断处理和中断控制器
ARM有七种模式,我们这里只讨论SVC、IRQ和FIQ模式。 我们可以假设ARM核心有两根中断引脚(实际上是看不见的),一根叫 irq pin, 一根叫fiq pin. 在ARM的cpsr中,有一个I位和一个F位,分别用来禁止IRQ和FIQ的。 先不说中断控制器,只说ARM核心。正常情况下,ARM核都只是机械地随着pc的指示去做事情,当CPSR中的I和F位为1的时候,IRQ和FIQ全部处于禁止状态。无论你在irq pin和fiq pin上面发什么样的中断信号,ARM是不会理你的,你根本不能打断他,因为他耳聋了,眼也瞎了。 在I位和F位为0的时候,当irq pin上有中断信号过来的时候,就会打断arm的当前工作,并且切换到IRQ模式
[单片机]
当TDC-GP22遇到ARM CortexM3
当智能电表在电力系统中如火如荼地发展时,水表也在朝智能化、全电子化的方向快速发展。这一方面因为全球水资源的短缺迫使政府重视节水和水量控制,另一方面也源于现代工业技术的成熟发展使得智能水表的实现成为可能。能满足阶梯计价的智能式水表将会成为建设节水型社会一大利器! 水表技术的创新发展是实现用水智能测量的重要武器。超声波水表是采用超声波时差原理,采用工业级电子元器件制造而成的全电子水表。这种超声波测量是利用一对超声波换能器相向交替(或同时)收发超声波,通过检测超声波在介质中的顺流和逆流传播时间差来间接测量流体的流速,再通过流速来计算流量。 图1 超声波时差法测量原理示意图 与传统机械式水表相比较,超声波水表精度高、可
[工业控制]
当TDC-GP22遇到<font color='red'>ARM</font> CortexM3
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件
更多往期活动

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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