免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3358 | 回复: 5

汇编宏的使用疑惑? [复制链接]

论坛徽章:
0
发表于 2011-09-28 11:46 |显示全部楼层
arch/arm/lib/copy_from_user.S中定义了一个宏:
        .macro str8w ptr reg1 reg2 reg3 reg4 reg5 reg6 reg7 reg8 abort
        stmia \ptr!, {\reg1, \reg2, \reg3, \reg4, \reg5, \reg6, \reg7, \reg8}
        .endm
arch/arm/lib/copy_template.S中使用这个宏:
str8w        r0, r3, r4, r5, r6, r7, r8, ip, lr, abort=20f         这个能理解的,相应的对上就可以了。
str8w        r0, r3, r4, r5, r6, r7, r8, r9, ip, , abort=19f      这个不能理解,怎么多了个‘,’号啊?
希望大家给个意见,解释解释!

论坛徽章:
0
发表于 2011-09-28 15:22 |显示全部楼层
传空参数,以空代替\reg8

论坛徽章:
0
发表于 2011-09-28 15:50 |显示全部楼层
先谢谢楼上的回答。不过你仔细看一下,\reg8使用的是ip寄存器,你会发现它参数太多了。

论坛徽章:
0
发表于 2011-09-29 12:32 |显示全部楼层
自己顶一下。专家门出来解答一下啊。

论坛徽章:
0
发表于 2011-09-29 15:01 |显示全部楼层
从反汇编来看

str8w        r0, r3, r4, r5, r6, r7, r8, ip, lr, abort=20f      
STMIA   R0!, {R3-R8,R12,LR}
str8w        r0, r3, r4, r5, r6, r7, r8, r9, ip, , abort=19f  
STMIA   R0!, {R3-R9,R12}

如果改成
str8w        r0, r3, r4, r5, r6, r7, r8, r9, ip,  abort=19f  
结果一样是:
STMIA   R0!, {R3-R9,R12}

个人认为,写下面这句时作者用了ctrl +c ,然后
str8w        r0, r3, r4, r5, r6, r7, r8, ip, lr, abort=20f      
然后
str8w        r0, r3, r4, r5, r6, r7, r8, ip, , abort=20f      
然后
str8w        r0, r3, r4, r5, r6, r7, r8,r9, ip, , abort=20f      
然后
str8w        r0, r3, r4, r5, r6, r7, r8,r9, ip, , abort=19f      
所以就变成这样了,呵呵

论坛徽章:
0
发表于 2011-09-29 18:44 |显示全部楼层
感谢楼上的解答,真是专家,非常非常感谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP