历史上的今天
今天是:2024年11月20日(星期三)
2019年11月20日 | ARM程序编写笔记
2019-11-20 来源:51hei
#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入门学习指导
史海拾趣
|
工业自动化1-36轴2相3相5相步进电机.伺服电机运动控制卡; 运动控制器; 运动驱动器;运动控制系统。 1、得到德国设计公司最先进的多轴运动控制技术方案,性能稳定可靠,高精密,电机运行噪音小 2、驱动控制2合1集成模板上,让你减少另外购买驱动器 ...… 查看全部问答> |
|
本帖最后由 paulhyde 于 2014-9-15 03:59 编辑 最近在做各个常用模块,做了几个,效果还不错,不过,做到AD,DA转换的时候感觉有点困难,模块做得不是很理想, 我们主要做AD0809,DA0832这两款比较常见的芯片,可是总是无法总结出一个比较经典,实 ...… 查看全部问答> |
|
CodeVisionAVR C Library Functions Reference CodeVisionAVR C 库函数介绍 译自CodeVisionAVR C Compiler Help … 查看全部问答> |
|
关于WINCE下,继承CButton类,实现一个图形按钮类;发现无论如何都是刷新背景。 在WINDOWS下,Invalidate(FALSE)或者OnEraseBkgnd直接返回,就不会率刷新背景。 但在WINCE下,如果如何都刷背景。 按钮要实现如下效果:当鼠标移动按钮上面时,显示一副图,移开后显示另一副图,发现在WINCE下经常有闪屏的情况,本人认为就是绘 ...… 查看全部问答> |
|
#define TYPE_R (0x30000008) Type = *(UCHAR *)(TYPE_R) 这个是访问EPLD的读操作,EPLD的数据port宽度定义为了8bit。 我不太明白的是*(UCHAR *)(TYPE_R)的语法代表什么意思,难道不是把地址0x30000008 ...… 查看全部问答> |
|
我自己的FON字体似乎visual studio 2005 不支持,大家知道为什么么? 最近作pdf417条形码,缺少一个字库,请问大家有么?能否共享一个? qq:61060673… 查看全部问答> |




