首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >统一iOS和安卓系统上的霓虹灯组件

统一iOS和安卓系统上的霓虹灯组件
EN

Stack Overflow用户
提问于 2012-02-03 16:19:32
回答 3查看 520关注 0票数 3

我想在IOS(Xcode4.2)和Android(ndk r7)上使用统一的霓虹灯汇编代码。但是它们的宏定义是如此的不同:

IOS:

.macro TestMacro 3

vext.8 $2,$0,$1,#1

.endm

ndk r7:

.macro TestMacro参考,源,数据源

vext.8 \dst,\ref,\src,#1

.endm

有什么办法统一他们吗?谢谢。

EN

回答 3

Stack Overflow用户

发布于 2012-04-20 18:29:54

我对ios和android使用不同的宏定义

代码语言:javascript
运行
复制
example.S

#ifdef __MACH__

; iOS
.macro TestMacro
    vext.8 $2, $0, $1, #1
.endm

#else//__MACH__

; Android NDK
.macro TestMacro ref,src,dst
    vext.8 \dst,\ref,\src, #1
.endm

#endif//__MACH__
票数 1
EN

Stack Overflow用户

发布于 2013-11-03 16:11:13

您可以使用C预处理器启用“新”宏语法,如下所示:

代码语言:javascript
运行
复制
#include "macros.h"

.macro M_DEMO M3ARGS
   #define ref MARG0
   #define src MARG1
   #define dst MARG2

   vext.8 dst, ref, src, #1

   #undef ref
   #undef src
   #undef dst
.endm

其中,macros.h头文件包含:

代码语言:javascript
运行
复制
#ifndef __MACROS_H__
#define __MACROS_H__

#ifdef __MACH__

    /*
     * iOS macro support
     */

    // Number of arguments in macro definition
    #define M0ARGS
    #define M1ARGS
    #define M2ARGS
    #define M3ARGS
    #define M4ARGS
    #define M5ARGS
    #define M6ARGS
    #define M7ARGS
    #define M8ARGS
    #define M9ARGS
    #define M10ARGS

    // Macro arguments
    #define MARG0 $0
    #define MARG1 $1
    #define MARG2 $2
    #define MARG3 $3
    #define MARG4 $4
    #define MARG5 $5
    #define MARG6 $6
    #define MARG7 $7
    #define MARG8 $8
    #define MARG9 $9

#else

    /* 
     * Android macro support
     */

    // Number of arguments in macro definition
    #define M0ARGS
    #define M1ARGS  $0
    #define M2ARGS  $0, $1
    #define M3ARGS  $0, $1, $2
    #define M4ARGS  $0, $1, $2, $3
    #define M5ARGS  $0, $1, $2, $3, $4
    #define M6ARGS  $0, $1, $2, $3, $4, $5
    #define M7ARGS  $0, $1, $2, $3, $4, $5, $6
    #define M8ARGS  $0, $1, $2, $3, $4, $5, $6, $7
    #define M9ARGS  $0, $1, $2, $3, $4, $5, $6, $7, $8
    #define M10ARGS $0, $1, $2, $3, $4, $5, $6, $7, $8, $9

    // Macro arguments
    #define MARG0 \$0
    #define MARG1 \$1
    #define MARG2 \$2
    #define MARG3 \$3
    #define MARG4 \$4
    #define MARG5 \$5
    #define MARG6 \$6
    #define MARG7 \$7
    #define MARG8 \$8
    #define MARG9 \$9

#endif

#endif // __MACROS_H__
票数 0
EN

Stack Overflow用户

发布于 2012-02-03 16:38:34

尝试使用来自C/C++源代码的GCC内部函数,而不是编写汇编文件。或者是GCC内联asm。

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

https://stackoverflow.com/questions/9125621

复制
相关文章

相似问题

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