| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2036 人关注过本帖
标题:关于c 调用汇编 参数传递的问题,请大神解答
只看楼主 加入收藏
zjr19850103
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2012-12-10
收藏
 问题点数:0 回复次数:16 
关于c 调用汇编 参数传递的问题,请大神解答
比如有下面这样一个简写的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;
    }
搜索更多相关主题的帖子: return 寄存器 
2012-12-19 18:09
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
arm是啥 单片机吗

不过我觉得
my_arm_add(m,n,a,b,c,d)
{
    return m+n+a+b+c+d;
}
这个已经很优化了  没法进一步优化了吧

DO IT YOURSELF !
2012-12-19 19:24
朱三哥
Rank: 5Rank: 5
等 级:职业侠客
威 望:1
帖 子:311
专家分:359
注 册:2012-12-11
收藏
得分:0 
参数 传递 可以用栈
可以用 寄存器
你还可以模仿 数组 的方式
传入首地址 和 数组的长度的方式引用

还可以构造数据结构

哥,破你无线很难的,不要老是改,少看路由器上的灯,你会死啊
2012-12-20 02:43
朱三哥
Rank: 5Rank: 5
等 级:职业侠客
威 望:1
帖 子:311
专家分:359
注 册:2012-12-11
收藏
得分:0 
各种方式,函数使用的数据核心 就是个地址的问题

哥,破你无线很难的,不要老是改,少看路由器上的灯,你会死啊
2012-12-20 02:43
朱三哥
Rank: 5Rank: 5
等 级:职业侠客
威 望:1
帖 子:311
专家分:359
注 册:2012-12-11
收藏
得分:0 
汇编语言  子程序功能部分的  知识  再复习下
还有 数据结构部分

高级程序的设计思想也可以借鉴下  个人感想

哥,破你无线很难的,不要老是改,少看路由器上的灯,你会死啊
2012-12-20 02:45
zjr19850103
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2012-12-10
收藏
得分:0 
回复 5楼 朱三哥
谢谢你,我在仔细看看
2012-12-20 09:22
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
这种东西编译器就能很好的优化罢
2012-12-20 12:23
x64asm
Rank: 2
来 自:X64ASM
等 级:论坛游民
威 望:1
帖 子:45
专家分:36
注 册:2010-5-20
收藏
得分:0 
以下是引用zklhp在2012-12-20 12:23:40的发言:

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



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

[ 本帖最后由 x64asm 于 2012-12-20 20:09 编辑 ]

姓名:旖旎[x64asm]
QQ:6405035,6405038
2012-12-20 20:08
suijishu
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:66
专家分:144
注 册:2012-12-1
收藏
得分:0 
以下是引用x64asm在2012-12-20 20:08:02的发言:

 
 
 
zklhp版主所言甚有道理,何必纠结这等小事,优化从来都是个伪命题,你就算优化到极致,你考虑过
操作系统的内核/用户态切换,进程切换这样每次都耗费数千微秒的开销了嘛?你那点优化相对于系统开销有何意义?
要真正实现优化,先接管操作系统,停止中断,封锁线程调度和进程切换,方有意义,否则,那种伪优化,不如没有,
几微秒和几千几万微秒相比,何来优化呢?
中断都停了,系统还能工作?你牛!!!!
2012-12-20 21:41
x64asm
Rank: 2
来 自:X64ASM
等 级:论坛游民
威 望:1
帖 子:45
专家分:36
注 册:2010-5-20
收藏
得分:0 
以下是引用suijishu在2012-12-20 21:41:56的发言:

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



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

[ 本帖最后由 x64asm 于 2012-12-21 05:18 编辑 ]

姓名:旖旎[x64asm]
QQ:6405035,6405038
2012-12-21 05:17
快速回复:关于c 调用汇编 参数传递的问题,请大神解答
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017824 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved