Próbuję wywołać funkcję, która jest kodowana w montażu ARM NEON w pliku .S który wygląda tak:ARM NEON montaż na Windows Phone 8 nie działa
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]
[....]
a ja go montażu tak:
armasm.exe -32 func.s func.obj
Niestety to nie działa, a otrzymuję wyjątek od instrukcji niezgodnej z instrukcją, gdy próbuję wywołać funkcję. Kiedy użyłem dumpbin.exe do zdemontowania pliku .obj, wydaje się, że jest on demontowany tak, jakby był kodem Thumb, pomimo dyrektywy ARM w zestawie (zobacz kod powyżej).
Podejrzewam, że funkcja jest wywoływana w trybie Kciuk i że wszystkie funkcje domyślnie są w trybie Kciuk w systemie Windows. Nie widzę jednak żadnych informacji na ten temat.
Czy ktoś wie, co się tutaj dzieje?
EDIT: To się dzieje na Microsoft Surface oraz
Ah, Głupie pytanie: Co sprawia, że myślisz, że ARM Neon jest obsługiwany na WP8? Nie widziałem nic mówiącego, że jest obsługiwane na WP8 ... – JustinAngel
armasm.exe narzekało na kilka rzeczy , które naprawiłem, ale nie podniosło to żadnych ostrzeżeń na temat NEON, a 95% z nich to NEON –
Nie wiem o WP8, ale słyszałem, że WinRT obsługuje tylko kod Thumb2 (nawet jeśli CPU akceptuje RAMIĘ). Dlaczego jednak nie możesz połączyć się z Thumb2? –