c语言转化为arm汇编指令

If(a==0||b==1)c=d+e(2)if((a==b)&&(c==d))&&(e==f)g++;... If(a==0||b==1) c=d+e

(2) if ((a= = b)&&(c= = d))&&(e= =f) g++;
展开
 我来答
yanhaiyuyu
2012-10-30
知道答主
回答量:15
采纳率:0%
帮助的人:6.6万
展开全部
ARM的话要配置外设的,而且有使用手册,一般用的话查一下使用手册就可以了。
百度网友3b1b680
2012-10-26 · TA获得超过966个赞
知道小有建树答主
回答量:978
采纳率:33%
帮助的人:620万
展开全部
额。。。。
你可以用编译器编译一下,然后调试看下汇编代码的。。。
追问
不是arm的
追答
用ADS1.2,armgcc,不就得了
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
许诗文00
推荐于2017-10-06 · TA获得超过4290个赞
知道小有建树答主
回答量:425
采纳率:100%
帮助的人:26万
展开全部
1.汇编程序访问C语言全局变量
全局变量只能通过地址间接调用,为了访问C语言中全局变量,首先要通过extern伪指令引入全局变量,然后将其地址装入寄存器中。
对于unsigned char类型,使用LDRB/STRB访问;
对于unsigned short类型,使用LDRH/STRH访问;
对于unsigned int类型,使用LDR/STR访问;
对于char类型,使用LDRSB/STRSB访问;
对于short类型,使用LDRSH/STRSH访问;
例子:
.text
.global asmsubroutine
.extern globvar
asmsubroutine:
LDR R1,=globvar
LDR R0,[R1]
ADD R0,R0,#2
STR R0,[R1]
MOV PC,LR
.end
2.C程序调用汇编程序
C程序调用汇编程序首先通过extern声明要调用的汇编程序模块,声明中形参个数要与汇编程序模块中需要的变量个数一致,且参数传递要满足ATPCS规则,然后在C程序中调用。
例子:
#include<stdio.h>
extern void *strcopy(char*d,char*s);//模块声明
int main()
{
char*srcstr="first";
char*dststr="second";
strcopy(dststr,srcstr);//汇编模块调用;
}
.text
.global strcopy
Strcopy:
LDRB R2,[R1],#1
STRB R2,[R0],#1
CMP R2,#0
BNE Sstcopy
MOV PC,LR
.end
汇编程序调用C程序
在调用之前必须根据C语言模块中需要的参数个数,以及ATPCS参数规则,完成参数传递,即前四个参数通过R0-R3传递,后面的参数通过堆栈传递,然后再利用B、BL指令调用。
例子:
int g(int a,int b,int c,int d,int e)//C语言函数原型
{
return(a+b+c+d+e);
}
汇编语言完成是求i+2i+3i+4i+5i的结果;
.global _start
.text
_start:
.extern g ;引入c程序
STR LR,{SP,-#4}!;保存PC
ADD R1,R0,R0
ADD R2,R1,R0
ADD R3,R1,R2
STR R3,{SP,#-4}!
ADD R3,R1,R1
BL g ;调用C函数g
ADD SP,SP,#4
LDR PC,[SP],#4
.end
return(0);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式