忘记密码   免费注册 查看新帖 | 论坛精华区

ChinaUnix.net

  平台 论坛 博客 认证专区 大话IT HPC论坛 徽章 文库 沙龙 自测 下载 频道自动化运维 虚拟化 储存备份 C/C++ PHP MySQL 嵌入式 Linux系统
最近访问板块 发新帖
查看: 31319 | 回复: 2

ios开发xcode不认arm内嵌汇编? [复制链接]

论坛徽章:
9
摩羯座
日期:2013-08-15 15:18:48狮子座
日期:2013-09-12 18:07:47金牛座
日期:2013-09-16 13:23:09辰龙
日期:2013-10-09 09:03:27白羊座
日期:2013-10-17 13:32:44子鼠
日期:2014-04-23 15:09:38戌狗
日期:2014-09-17 11:37:542015年亚洲杯之韩国
日期:2015-03-26 10:16:442015亚冠之武里南联
日期:2015-08-18 14:55:52
发表于 2013-03-15 15:59 |显示全部楼层

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

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

论坛徽章:
9
摩羯座
日期:2013-08-15 15:18:48狮子座
日期:2013-09-12 18:07:47金牛座
日期:2013-09-16 13:23:09辰龙
日期:2013-10-09 09:03:27白羊座
日期:2013-10-17 13:32:44子鼠
日期:2014-04-23 15:09:38戌狗
日期:2014-09-17 11:37:542015年亚洲杯之韩国
日期:2015-03-26 10:16:442015亚冠之武里南联
日期:2015-08-18 14:55:52
发表于 2013-03-22 10:16 |显示全部楼层
找到OSAtomicCompareAndSwap32系列的,可以实现功能,不需要内嵌汇编了

论坛徽章:
6
2015年迎新春徽章
日期:2015-03-04 10:16:53操作系统版块每日发帖之星
日期:2015-08-04 06:20:002015亚冠之鹿岛鹿角
日期:2015-08-05 16:51:182015亚冠之全北现代
日期:2015-08-07 17:14:392015亚冠之武里南联
日期:2015-08-11 15:33:03数据库技术版块每日发帖之星
日期:2016-02-02 06:20:00
发表于 2015-08-01 17:27 |显示全部楼层
这肯定要用交叉编译的吧,关键选对编译器吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号 北京市公安局海淀分局网监中心备案编号:11010802020122
广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员  联系我们:
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP