Sto cercando di chiamare una funzione che è codificato in assembly ARM NEON in un file .s che assomiglia a questo:ARM su Windows Phone 8 non funziona
AREA myfunction, code, readonly, ARM
global fun
align 4
fun
push {r4, r5, r6, r7, lr}
add r7, sp, #12
push {r8, r10, r11}
sub r4, sp, #64
bic r4, r4, #15
mov sp, r4
vst1.64 {d8, d9, d10, d11}, [r4]!
vst1.64 {d12, d13, d14, d15}, [r4]
[....]
e sto assemblaggio che In questo modo:
armasm.exe -32 func.s func.obj
Sfortunatamente questo non funziona, e sto ricevendo un'eccezione di istruzioni illegali quando provo a chiamare la funzione. Quando ho usato dumpbin.exe per disassemblare il .obj, sembra che si stia disassemblando come se fosse un codice Thumb, nonostante la direttiva ARM nell'assembly (vedi il codice sopra).
Sospetto che la funzione venga richiamata in modalità Pollice e che tutte le funzioni siano presumibilmente in modalità Thumb per impostazione predefinita su Windows. Non riesco a vedere per trovare alcuna informazione su questo però.
Qualcuno sa cosa sta succedendo qui?
EDIT: Questo accade su Microsoft Surface e
Ah, domanda stupida: cosa ti fa pensare che ARM Neon sia supportato su WP8? Non ho visto nulla che dicesse che è supportato su WP8 ... – JustinAngel
armasm.exe si è lamentato di alcune cose , che ho risolto, ma non ha generato alcun avviso circa il NEON, e il 95% degli insns era NEON –
Non so di WP8, ma ho sentito che WinRT supporta solo il codice Thumb2 (anche se la CPU accetta BRACCIO). Perché non puoi assemblare come Thumb2? –