共2条
1/1 1 跳转至页
【求助】大家帮忙看看这个程序!!
问
我在c语言中想要调用线性汇编函数,主程序有一个结构体,汇编里面连接总是报错,代码如下:
short a1[2][2]={1,2,3,4};
short b1[2][2]={6,7,8,9};
short *a,*b;
typedef struct zz{
short *x;
short *y;
}z;
z d;
z *p;
short abc(struct zz *p);
int main()
{
short c;
p=&d;
p->x = &a1[0][0];
p->y = &b1[0][0];
c = abc(p);
LOG_printf(&trace,"%d",c);
return c;
}
线性汇编为:
.global _abc
_abc: .cproc p
.no_mdep
.mptr a1,a2
.mptr c1,c2
.reg t1,a1,a2,sum,sum1,sum2,sum3
.reg b0,b1
.reg c1,c2
zero sum
mvk 0,t1
mv d.x,a1
mv d.y,a2
loop: .trip 2
ldw *a1++,c1
ldw *a2++,c2
mpy c1,c2,sum1
mpyh c1,c2,sum2
sadd sum2,sum1,sum3
sadd sum3,sum,sum
bdec loop, t1
.return sum
.endproc
实现功能十分简单,没用到结构体的时候一切正常,加入结构体后,连接时说结构体没有用声明,哪位大侠能指点一下,为什么啊?
用的使c64片子
答 1: 个人见解先把线形汇编的那部分是用C语言写出一个相当功能的函数,编译完以后 再在其汇编代码上修改替代现在的部分 估计就不会有什么问题了. 答 2: 大侠们指教我是按照c程序改写线性汇编的,c编译器编译完以后和我写的代码对不上,我不知道它是怎么处理结构体的
short a1[2][2]={1,2,3,4};
short b1[2][2]={6,7,8,9};
short *a,*b;
typedef struct zz{
short *x;
short *y;
}z;
z d;
z *p;
short abc(struct zz *p);
int main()
{
short c;
p=&d;
p->x = &a1[0][0];
p->y = &b1[0][0];
c = abc(p);
LOG_printf(&trace,"%d",c);
return c;
}
线性汇编为:
.global _abc
_abc: .cproc p
.no_mdep
.mptr a1,a2
.mptr c1,c2
.reg t1,a1,a2,sum,sum1,sum2,sum3
.reg b0,b1
.reg c1,c2
zero sum
mvk 0,t1
mv d.x,a1
mv d.y,a2
loop: .trip 2
ldw *a1++,c1
ldw *a2++,c2
mpy c1,c2,sum1
mpyh c1,c2,sum2
sadd sum2,sum1,sum3
sadd sum3,sum,sum
bdec loop, t1
.return sum
.endproc
实现功能十分简单,没用到结构体的时候一切正常,加入结构体后,连接时说结构体没有用声明,哪位大侠能指点一下,为什么啊?
用的使c64片子
答 1: 个人见解先把线形汇编的那部分是用C语言写出一个相当功能的函数,编译完以后 再在其汇编代码上修改替代现在的部分 估计就不会有什么问题了. 答 2: 大侠们指教我是按照c程序改写线性汇编的,c编译器编译完以后和我写的代码对不上,我不知道它是怎么处理结构体的
共2条
1/1 1 跳转至页
回复
| 有奖活动 | |
|---|---|
| 2026年“我要开发板活动”第三季,开始了! | |
| 硬核工程师专属补给计划——填盲盒 | |
| “我踩过的那些坑”主题活动——第002期 | |
| 【EEPW电子工程师创研计划】技术变现通道已开启~ | |
| 发原创文章 【每月瓜分千元赏金 凭实力攒钱买好礼~】 | |
| 【EEPW在线】E起听工程师的声音! | |
| 高校联络员开始招募啦!有惊喜!! | |
| 打赏了!打赏了!打赏了! | |
我要赚赏金打赏帖 |
|
|---|---|
| RTOS怎么选?让我来给你答案!被打赏¥15元 | |
| 【S32K3XX】Flash驱动使用被打赏¥26元 | |
| 【FreeRtos】第一个任务的启动过程被打赏¥21元 | |
| 【分享开发笔记,赚取电动螺丝刀】FPB-RA6E2开发板的WDT功能测试被打赏¥22元 | |
| 关于cmakelist特性presets的使用被打赏¥20元 | |
| 【分享开发笔记,赚取电动螺丝刀】M5STACK系列屏幕质量测试程序,竟然有块亮斑?被打赏¥20元 | |
| 【分享开发笔记,赚取电动螺丝刀】快速搭建瑞萨FPB-RA6E2开发板开发环境被打赏¥14元 | |
| 【分享开发笔记,赚取电动螺丝刀】在音频测试中顺序的调整可改变功效被打赏¥18元 | |
| 【分享开发笔记,赚取电动螺丝刀】点阵显示模块及其应用-----献给新年的小礼物被打赏¥22元 | |
| 基于地奇星开发板的数码管模块显示技术被打赏¥23元 | |
我要赚赏金
