boost :: context для arm64?

Я пытаюсь собрать boost::context для iOS (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?

1

Решение

ARM64 (AArch64) довольно сильно отличается от ARM32 (A32) как в инструкциях, так и в наборе регистров. Соглашения о вызовах (ABI) также отличаются. Вам нужно будет переписать фрагменты ассемблера. Я бы порекомендовал связаться с разработчиками, так как вы, кажется, не знакомы с деталями низкого уровня, чтобы сделать это самостоятельно.

2

Другие решения


По вопросам рекламы [email protected]