注册 登录
编程论坛 汇编论坛

关于c 调用汇编 参数传递的问题,请大神解答

zjr19850103 发布于 2012-12-19 18:09, 2052 次点击
比如有下面这样一个简写的c函数:
my_arm_add(m,n,a,b,c,d)
{
    return m+n+a+b+c+d;
}
我需要用汇编优化它,那怎么读取它的参数,一般情况下我们只能读4个,那多余的两个怎么读到arm寄存器里面呢。
my_arm_add(m, n,a,b, c,d,)
{
    __asm__(     "add r0,r0,r1 \t\n"
                "add r0,r0,r2 \t\n"
                "add r0,r0,r3 \t\n"  
//上面三个指令完成了m+n+a+b,后面的c和d怎么读进来呢?            
                "bx  lr");
                    return m;
    }
16 回复
#2
wp2319572012-12-19 19:24
arm是啥 单片机吗

不过我觉得
my_arm_add(m,n,a,b,c,d)
{
    return m+n+a+b+c+d;
}
这个已经很优化了  没法进一步优化了吧
#3
朱三哥2012-12-20 02:43
参数 传递 可以用栈
可以用 寄存器
你还可以模仿 数组 的方式
传入首地址 和 数组的长度的方式引用

还可以构造数据结构
#4
朱三哥2012-12-20 02:43
各种方式,函数使用的数据核心 就是个地址的问题
#5
朱三哥2012-12-20 02:45
汇编语言  子程序功能部分的  知识  再复习下
还有 数据结构部分

高级程序的设计思想也可以借鉴下  个人感想
#6
zjr198501032012-12-20 09:22
回复 5楼 朱三哥
谢谢你,我在仔细看看
#7
zklhp2012-12-20 12:23
这种东西编译器就能很好的优化罢
#8
x64asm2012-12-20 20:08
以下是引用zklhp在2012-12-20 12:23:40的发言:

这种东西编译器就能很好的优化罢



zklhp版主所言甚有道理,何必纠结这等小事,优化从来都是个伪命题,你就算优化到极致,你考虑过
操作系统的内核/用户态切换,进程切换这样每次都耗费数千微秒的开销了嘛?你那点优化相对于系统开销有何意义?
要真正实现优化,先接管操作系统,停止中断,封锁线程调度和进程切换,方有意义,否则,那种伪优化,不如没有,
几微秒和几千几万微秒相比,何来优化呢?

[ 本帖最后由 x64asm 于 2012-12-20 20:09 编辑 ]
#9
suijishu2012-12-20 21:41
以下是引用x64asm在2012-12-20 20:08:02的发言:

 
 
 
zklhp版主所言甚有道理,何必纠结这等小事,优化从来都是个伪命题,你就算优化到极致,你考虑过
操作系统的内核/用户态切换,进程切换这样每次都耗费数千微秒的开销了嘛?你那点优化相对于系统开销有何意义?
要真正实现优化,先接管操作系统,停止中断,封锁线程调度和进程切换,方有意义,否则,那种伪优化,不如没有,
几微秒和几千几万微秒相比,何来优化呢?
中断都停了,系统还能工作?你牛!!!!
#10
x64asm2012-12-21 05:17
以下是引用suijishu在2012-12-20 21:41:56的发言:

中断都停了,系统还能工作?你牛!!!!



整个系统几百MB几G的代码干扰,如何做对比?任何的测试,均需要纯净环境,光谱测试需要
光谱纯的试剂,同样,代码优化测试需要在纯净的环境下执行。

[ 本帖最后由 x64asm 于 2012-12-21 05:18 编辑 ]
#11
信箱有效2012-12-22 19:18
看楼主my_arm_add就知道是arm平台的东东了,扯什么M什么G的,
能优化当然要优化,不能优化的都还想要优化呢。
#12
x64asm2012-12-22 19:38
你在我面前提什么优化不觉得班门弄斧么?ARM我没搞过么?我学了十年汇编从来不知道汇编和什么狗屁优化有关。你以为靠你那点三脚猫技俩能提高效率么?醒醒罢。
#13
suijishu2012-12-22 20:27
以下是引用x64asm在2012-12-22 19:38:28的发言:

你在我面前提什么优化不觉得班门弄斧么?ARM我没搞过么?我学了十年汇编从来不知道汇编和什么狗屁优化有关。你以为靠你那点三脚猫技俩能提高效率么?醒醒罢。
你跟个小P孩生什么气,呵呵。
zklhp的SSE优化还是可以看看的。
#14
zklhp2012-12-22 20:29
以下是引用suijishu在2012-12-22 20:27:11的发言:

你跟个小P孩生什么气,呵呵。
zklhp的SSE优化还是可以看看的。

提我做什么 上面那位是汇编界的大牛 我连小菜都算不上。。。
#15
suijishu2012-12-22 20:48
以下是引用zklhp在2012-12-22 20:29:41的发言:


提我做什么 上面那位是汇编界的大牛 我连小菜都算不上。。。
你这个谦虚的过分了。。。
#16
信箱有效2012-12-23 01:55
以下是引用x64asm在2012-12-22 19:38:28的发言:

你在我面前提什么优化不觉得班门弄斧么?ARM我没搞过么?我学了十年汇编从来不知道汇编和什么狗屁优化有关。你以为靠你那点三脚猫技俩能提高效率么?醒醒罢。
什么叫班门弄斧呢? 最恶心你这种自以为自己很牛X,每回贴必定以一种居高临下的姿态和口吻回复别人的所谓牛人了。别说什么十年 就是二十年一百年又怎么样?你可以在这里尽情的显摆你的牛X,可以在一切可能的地方炫耀你的任何可以炫耀的东西,不过你能不让别人说话吗?你能不让我发表我“班门弄斧”的帖子吗?

我是新手新手新新手,我觉得楼主是ARM平台,自然有那套平台的指令,有对应那套的编译器,有那套平台的优化规则,有基于那套平台上的软件的编写优化套路。况且楼主用ARM平台明显是做安卓的,绝大部分也是手机上的,你作为所谓的“牛X资深人士”,上来就扯什么“几百M上G的所谓代码干扰”,又什么光谱测试 又什么切换什么接管。。。各种专业名词各种显摆炫耀专业。

就贴论贴,我在回贴中 也仅仅是用了个“扯”字,我是新手,我不懂 我一知半解 我小P孩 我卤莽 我用词不当  我用了个“扯”字 小小的小小的冒犯了一下所谓的高人牛X人士,用自己无知的错误小小的微微的挑战了一下“牛X人”的权威,然后。。。哎呀,看这回贴,原来这就是高手的气度 这就是高手的素质,什么班门弄斧 什么狗P 什么三角猫  什么伎俩 这些词汇都出来了。原来这就是高手 这就是十年的汇编牛X人士 这就是把江湖名号亮在签名上的高手 这就是一个QQ号不够 非要写上两个QQ号让大家都知道有2个兄弟Q号的大神 。。。确实让人膜拜不已。



#17
zklhp2012-12-23 02:31
这种帖子关了最明智 各位得罪了
1