1

boost::contextiOS(armv7、armv7s、arm64)用にコンパイルしようとしています:

エラー

jump_arm_aapcs_macho_gas.S:52:18: error: ',' expected
    stmia a1, {v1-v8,sp-lr} @ save V1-V8,SP-LR
                 ^
jump_arm_aapcs_macho_gas.S:53:14: error: register expected
    str lr, [a1,#40] @ save LR as PC
             ^
jump_arm_aapcs_macho_gas.S:69:18: error: invalid variant 'use'
    mov a1, a3 @ use third arg as return value after jump
                 ^
jump_arm_aapcs_macho_gas.S:70:39: error: unexpected token at start of statement
                                    @ and as first arg in context function
                                      ^
jump_arm_aapcs_macho_gas.S:71:18: error: ',' expected
    ldmia a2, {v1-v8,sp-pc} @ restore v1-V8,SP-PC
                 ^

jump_arm_aapcs_macho_gas.S

.text
.globl _jump_fcontext
.align 2
_jump_fcontext:
    stmia   a1, {v1-v8,sp-lr}       @ save V1-V8,SP-LR
    str     lr, [a1,#40]            @ save LR as PC

#if (defined(__VFP_FP__) && !defined(__SOFTFP__))
    cmp     a4, #0                  @ test if fpu env should be preserved
    beq     1f

    mov     a4, a1
    add     a4, #52
    vstmia  a4, {d8-d15}            @ save S16-S31

    mov     a4, a2
    add     a4, #52
    vldmia  a4, {d8-d15}            @ restore S16-S31
1:
#endif

    mov     a1, a3                  @ use third arg as return value after jump
                                    @ and as first arg in context function
    ldmia   a2, {v1-v8,sp-pc}       @ restore v1-V8,SP-PC

arm64 を削除し、アーキテクチャを armv7 のみに設定すると、コンパイルされるので、コードは問題ないはずです。

これをarm64用にコンパイルする方法はありますか?

4

1 に答える 1

2

ARM64 (AArch64) は、命令とレジスタ セットの両方において、ARM32 (A32) とはかなり異なります。呼び出し規約 (ABI) も異なります。アセンブラのスニペットを書き直す必要があります。自分で行うには低レベルの詳細に精通していないようですので、開発者に連絡することをお勧めします。

于 2014-06-13T11:46:12.593 に答える