问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

汇编语言是怎么调用c语言的程序的?6

发布网友 发布时间:2023-09-19 13:35

我来回答

3个回答

热心网友 时间:2024-11-19 17:36

一、 参数传递的基本规则(ATPCS(ARM—Thumb Procere Call Standard))
1、 参数传递

二、汇编程序、C程序相互调用举例
1、 C程序调用汇编程序
汇编程序的设计要遵守ATPCS(ARM—Thumb Procere Call Standard),保证程序调用时参数的正确传递。在汇编程序中使用EXPORT 伪操作声明本程序,使得本程序可以被别的程序调用。在C程序使用extern声明该汇编程序。
下面是一个C程序调用汇编程序的例子。其中汇编程序strcopy实现字符串复制功能,C程序调用strcopy完成字符串复制的工作。
//C程序
#include <stdio.h>
extern void strcopy(char *d, const char *s);
int main( )
{
const char *srcstr=”First string-source”;
char dststr[ ]=”Second string-destination”;
printf(“Before copying:\n”);
printf(“%s\n %s\n”, srcstr,dststr);
strcopy(dststr,srcstr);
printf(“After copying:\n”);
printf(“%s\n %s\n “,srcstr,dststr);
while(1) ;
}

;汇编程序
AREA Scopy, CODE, READONLY
EXPORT strcopy
Strcopy
LDRB R2, [R1], #1
STRB R2, [R0], #1
CMPR2,#0
BNE Strcopy
MOV PC, LR
END
2、 汇编程序调用C程序
汇编程序的设计要遵守ATPCS,保证程序调用时参数的正确传递。在汇编程序中使用IMPORT伪操作声明将要调用的C程序。下面是一个汇编程序调用C程序的例子。其中在汇编程序中设置好各参数的值。本例中有6个参数,分别使用寄存器R0存放第1个参数,
R1存放第2个参数, R2存放第3个参数, R3存放第4个参数, 第5个、第6个参数利用数据栈传送。由于利用数据栈传递参数,在程序调用结束后要调整数据栈指针。
//C程序g( )返回6个参数的和
int g( int a, int b, int c, int d, int e, int f )
{
printf(“e=%d\n”, e);
printf(“f=%d\n”, f);
return (a+b+c+d+e+f);
}

; 汇编程序调用C程序 g( ) 计算6个整数 i, 2*i, 3*i, 4*i, 5*i, 6*i的和
EXPORT f
AREA f ,CODE, READONLY
IMPORT g
MOV R0, #1
ADD R1, R0, R0
ADD R2, R1, R0
ADD R3, R2, R0
ADD R4, R3, R0
ADD R5, R4, R0
STR R4, [SP, #-4]!
STR R5, [SP, #-4]!
BL g
ADD SP, SP, #4
ADD SP, SP, #4
STOP B STOP
END

热心网友 时间:2024-11-19 17:37

1、汇编语言程序可以将c语言可执行程序作为外部独立程序执行;
2、将c语言程序模块编译成obj文件,在汇编语言中可作为外部模块调用这个obj,用link程序可将它们装配成整体执行。

热心网友 时间:2024-11-19 17:37

汇编程序调用C程序。
汇编程序的设置要遵循ATPCS规则,保证程序调用时参数的正确传递。汇编程序调用C程序的方法如下:
在汇编程序中使用IMPORT伪指令声明将要调用的C程序函数;
在调用C程序时,要正确设置入口参数,然后使用BL指令调用追问不需要加载c语言编译器吗?入口参数是什么来的?

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
年终会活动策划方案 深度解析:第一财经回放,探索财经新风向 逆水寒手游庄园怎么邀请好友同住 逆水寒手游 逆水寒不同区可以一起组队吗? 逆水寒手游 逆水寒怎么进入好友世界? 逆水寒手游 逆水寒怎么去别人的庄园? 使用puppeteer实现将htmll转成pdf 内卷时代下的前端技术-使用JavaScript在浏览器中生成PDF文档 【译】将HTML转为PDF的几种实现方案 变形金刚08动画怎么样 榴莲吃起来有点酸是坏了吗 敦煌网dhgate 如何看待「读书无用论」这一观点? 怎么样去读懂女人的心? ...能告诉我到底去日本学什么,我就是想回来好就业. 社保交了工资没发什么情况 耐克空军一号400元是真的吗!淘宝上的!还没买就是想问问! ...一样的肉包,别人都是两个小坑或佤进去!我这个是怎么回事啊... 刚领了导游证,可以不找旅行社直接去景点带游客么? 站的笔顺正确的写法怎么写 我通过了2011年11月的湖南导游资格证的考试,到现在还没有...2 谁知道湖南省2016年导游资格证什么时候发? 导游资格证未领取,还能领导游证吗1 我通过了2011年11月的湖南导游资格证的考试,可是到现在也... 打游戏的时候怎么把双显卡的电脑把A卡设置为主显卡?A卡应该怎... 笔记本玩游戏怎么调独显设置5 我用什么证明自己作文750字9 我记得看过一个用巴雷特把直升机驾驶员打死的视频7 使命召唤14二战 飞机那关怎么过11 谁知道使命召唤4那个2个狙击手做的到最后守在学校里有一个大型...10 如何在汇编调用c语言函数?18 我想开办一家小型机械加工厂,该怎么做??146 ...练习柔术软功不知道晚不晚?如果拉伤会不会不能恢复啊?听说20岁... 干机械加工这个行业未来有前途吗153 这个乒乓球拍多少钱 征信上有十几条银行的查询记录,名下有多张未激活的信用卡,影响...5 圆明园酒鬼现代诗 意林少年励志馆14-青出于蓝胜于蓝中有一首现代诗叫《一年》 求各位亲帮... 学校强制补课强制收费,你觉得应该吗? 这个乒乓球拍多少钱。 买一个足球和一个乒乓球拍需要多少元 有在成都典将台培训过的没有?他们做主持人培训啊?2 excel2016如何自动调整行高列宽 请问有敦煌网的卖家吗?在那里卖东西方便吗? 我想开个小型机械加工厂…得多少钱啊。还有都需要买什么设备。能...49 如果办理的工商银行信用卡未领和激活会影响公积金代款吗?2 ...说大舌头儿童不配说话?他们也能成为“语言天才” 22岁还能学格斗吗? 银行卡长时间不用了,会有影响吗? 要做一个小型机械加工厂的老板,应该具备什么条件。23