Chinaunix

标题: 汇编宏的使用疑惑? [打印本页]

作者: jwwzhh    时间: 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      这个不能理解,怎么多了个‘,’号啊?
希望大家给个意见,解释解释!
作者: qtdszws    时间: 2011-09-28 15:22
传空参数,以空代替\reg8
作者: jwwzhh    时间: 2011-09-28 15:50
先谢谢楼上的回答。不过你仔细看一下,\reg8使用的是ip寄存器,你会发现它参数太多了。
作者: jwwzhh    时间: 2011-09-29 12:32
自己顶一下。专家门出来解答一下啊。
作者: liu090    时间: 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      
所以就变成这样了,呵呵
作者: jwwzhh    时间: 2011-09-29 18:44
感谢楼上的解答,真是专家,非常非常感谢!




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2