【发布时间】:2012-01-26 16:19:12
【问题描述】:
我正在研究内联汇编。我想在 Xcode 4 LLVM 3.0 编译器下的 iPhone 中编写一个简单的例程。我成功编写了基本的内联汇编代码。
示例:
int sub(int a, int b)
{
int c;
asm ("sub %0, %1, %2" : "=r" (c) : "r" (a), "r" (b));
return c;
}
我在 stackoverflow.com 上找到了它,而且效果很好。但是,我不知道如何编写有关 LOOP 的代码。
我需要像这样的汇编代码
void brighten(unsigned char* src, unsigned char* dst, int numPixels, int intensity)
{
for(int i=0; i<numPixels; i++)
{
dst[i] = src[i] + intensity;
}
}
【问题讨论】:
-
这样的功能也可以使用 OpenGL ES 和片段着色器来实现。如果这适用于您的问题。这将为您“免费”提供并行化,类似于 Matt 建议的 NEON 的使用。
-
是的,你肯定可以使用 OpenGL ES。很大程度上取决于您在做什么以及是否要将其作为依赖项引入。
-
如果他需要将计算的总和返回给 CPU,OpenGL ES 可能不够快。 iPad GPU 不是为高效执行此任务而制造的。
标签: iphone c assembly arm inline-assembly