w_anthony 发表于 2013-03-15 15:59

ios开发xcode不认arm内嵌汇编?


static volatile int g_interlock = 0;
static void NcInterLock()
{
        __asm__ volatile("\
                mov r0, #1\r\n\t\
        1:\r\n\t\
                swp r0, r0, [%0]\r\n\t\
                teqne r0, #0\r\n\t\
                bne 1b" \
                : \
                : "r"(&g_interlock)
                : "r0", "cc");
}
第一个错误是不认最后那行冒号后面的r0寄存器,如果把"r0"删了,
编译则
提示错误:Instruction requires: arm-mode
            Predicated instructions must be in IT block
第一个错误指向第一行r0寄存器,第二个是指向swp

那个xcode是否支持arm汇编呢?还是项目属性哪里不对?这段汇编主要是想有一个忙等的自旋锁,如果有内置的自旋锁API也可以,那就不需要汇编了。

w_anthony 发表于 2013-03-22 10:16

找到OSAtomicCompareAndSwap32系列的,可以实现功能,不需要内嵌汇编了

lxy572535121 发表于 2015-08-01 17:27

这肯定要用交叉编译的吧,关键选对编译器吧
页: [1]
查看完整版本: ios开发xcode不认arm内嵌汇编?