Я пишу простую программу на ассемблере, которая будет вызываться из Java JNI.
Я хочу выполнить функцию из JNI, которая согласно документации находится под индексом 187. Пока я выполняю эту строчку:
call qword ptr[rax + 187*8]
Я получаю ошибку нарушения доступа. Что я могу делать неправильно? (Я умножаю индекс на 8 из-за архитектуры x64).
Весь код, который я выполняю:
push rdx ; save Java array pointer for later use
push rdi ; save JNIEnv pointer for later use
push rcx ; save array length for later use
mov rsi, rdx ; set array parameter for GetIntArrayElements
mov rax, [rdi] ; get location of JNI function table
xor edx, edx ; set isCopy parameter to false for GetIntArrayElements
call qword ptr[rax + 187*8]