首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >android : 64位原子(ARM)

android : 64位原子(ARM)
EN

Stack Overflow用户
提问于 2012-12-13 01:31:51
回答 1查看 2.3K关注 0票数 0

网上有一些关于如何编写64位原子代码的材料,例如:

How to guarantee 64-bit writes are atomic?

。。但在我走上这条路之前,我更喜欢使用Android / ARM特定的解决方案(如果存在的话)。

我正在移植一个需要32位和64位原子操作的C++引擎。我研究并实现了GCC内置的__sync_*函数,但到了链接的时候,我得到了64位操作的错误:

代码语言:javascript
运行
复制
error: undefined reference to '__sync_fetch_and_or_8'
error: undefined reference to '__sync_lock_test_and_set_8'
error: undefined reference to '__sync_fetch_and_and_8'
error: undefined reference to '__sync_fetch_and_add_8'
error: undefined reference to '__sync_val_compare_and_swap_8'

我正在获取armeabi-v7a,我已经阅读了一些64位原子的组装说明(ldrexd/strexd),那么有没有办法通过GCC内置的atomics来访问它们呢?如果没有,其他的选择是什么?

  • 使用互斥锁保护每个64位操作。
  • 编写汇编代码以利用ldrexd/strexd
  • 将超级秘密标志传递到NDK工具链以启用64位本质?
  • 等待ARMv8?:)

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-02 19:51:48

自从我提出问题以来,NDK r8d就发布了,它支持内置64位原子。

http://developer.android.com/tools/sdk/ndk/index.html

支持64位内置原子功能的ARM到GCC 4.6.

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13851565

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档