Tag: 组装

在iOS上如何快速转换RGB24到BGR24?

我使用Accelerate.framework的vImageConvert_RGB888toPlanar8和vImageConvert_Planar8toRGB888将RGB24转换为vImageConvert_Planar8toRGB888 ,但是当数据需要转换的时候非常大,比如3M或者4M,那么花费在这个上的时间大约是10ms。 所以有人知道一些足够快的想法吗?我的代码是这样的: – (void)transformRGBToBGR:(const UInt8 *)pict{ rgb.data = (void *)pict; vImage_Error error = vImageConvert_RGB888toPlanar8(&rgb,&red,&green,&blue,kvImageNoFlags); if (error != kvImageNoError) { NSLog(@"vImageConvert_RGB888toARGB8888 error"); } error = vImageConvert_Planar8toRGB888(&blue,&green,&red,&bgr,kvImageNoFlags); if (error != kvImageNoError) { NSLog(@"vImagePermuteChannels_ARGB8888 error"); } free((void *)pict); }

使用NEON优化RGBA8888到RGB565的转换

我试图使用NEON向量指令集来优化iOS上的图像格式转换。 我认为这将很好地映射,因为它处理了一堆类似的数据。 然而,我的尝试并没有那么好,只是实现了一个边缘的加速比天真的C实现: for(int i = 0; i < pixelCount; ++i, ++inPixel32) { const unsigned int r = ((*inPixel32 >> 0 ) & 0xFF); const unsigned int g = ((*inPixel32 >> 8 ) & 0xFF); const unsigned int b = ((*inPixel32 >> 16) & 0xFF); *outPixel16++ = ((r >> 3) << 11) | ((g >> […]

iOS汇编代码

我想尝试一些与苹果iOS的ARM汇编代码只是为了教育目的。 我想从Xcode中的一些行代码开始。 我的理解是,我需要编译一个iOS设备,例如我的iPhone,这意味着我需要支付99美元/年的会员资格。 我不认为我可以在iOS手机模拟器上使用ASM汇编代码。 我很难在Xcode环境下用iPhone查找有关ARM汇编代码的示例,书籍或文档。 我做错了吗? 也许iOS不是学习ARM组件的用户最友好的环境。

Mach-O符号存根(IOS)

我想了解Mach-o文件是如何工作的,并且已经在可用的在线资源方面取得了很大进展(特别是苹果页面: http : //developer.apple.com/library/mac/#documentation /developertools/conceptual/MachORuntime/Reference/reference.html ),但是我在理解符号存根如何工作方面遇到了障碍。 使用“otool -l”我看到以下部分: Section sectname __symbolstub1 segname __TEXT addr 0x00005fc0 size 0x00000040 offset 20416 align 2^2 (4) reloff 0 nreloc 0 flags 0x80000408 但是,当我在hex编辑器中查看二进制文件中的数据时,我看到以下4个字节重复一遍: 00005FC0 38 F0 9F E5 38 F0 9F E5 38 F0 9F E5 38 F0 9F E5 88 00005FD0 38 F0 9F E5 38 F0 9F […]

如何在XCode中使用ARM汇编程序?

只是为了教育目的,我想添加一个函数到现有的iPhone应用程序,用ARM程序集编写。 一般来说,我不需要关于ARM程序集的教程,因为我已经阅读了太多的教程。 我只是不知道如何实际运行代码! 我想要做的是这样的: useless.h: void useless(); useless.s: useless: bx lr 如果这也可以在模拟器上工作,那就好了…在模拟器上.s文件不会编译,所以我也许应该这样做: useless.s: #if I_AM_ARM useless: bx lr #endif useless.c: #if !I_AM_ARM void useless() { } #endif 我知道我使用的语法已经坏了,但是我该如何正确写入? (因为我想尝试一些内联汇编,打破模拟器上的应用程序是不行的…) 次好的select是使用内联汇编,但是我更愿意使用非内联汇编。 谢谢! 编辑:我想学习ARM汇编,所以我想找一个方法来编译ARM汇编代码,并且汇编成EXECUTE的汇编代码。

RGBA到ABGR:iOS / XCode的内联胳膊霓虹灯asm

这个代码(非常相似的代码,没有试过这个代码)使用Android NDK编译,而不是用XCode / armv7 + arm64 / iOS 评论中的错误: uint32_t *src; uint32_t *dst; #ifdef __ARM_NEON __asm__ volatile( "vld1.32 {d0, d1}, [%[src]] \n" // error: Vector register expected "vrev32.8 q0, q0 \n" // error: Unrecognized instruction mnemonic "vst1.32 {d0, d1}, [%[dst]] \n" // error: Vector register expected : : [src]"r"(src), [dst]"r"(dst) : "d0", "d1" ); #endif […]