我想获取二维数组(array [0] [0])的第一个值。我在Java中声明了以下函数:
public native void function(int[][] array, int width, int height);
我正在为Windows x64创建应用程序,因此我正在使用Windows x64 ABI。
执行后:
mov env,rcx ; 1st argument
; according to doc 2nd arg. is Java Object so i omitt this variable
mov jArray,r8 ; 3rd argument
mov width, r9 ; 4th argument
mov rbx, qWORD PTR[rsp + 40] ; 5th arg array.length (height)
mov height, rbx ; 5th
mov rax, [rcx] ; get location of JNI function table
mov funTable, rax
mov rdx, r8 ; set second arg as jArray
mov r8, 0 ; set index of row
call qword ptr[rax + 173 * 8] ; invoke GetObjectArrayElement()
mov rbx, rax ; set return value to rbx
mov rcx, env
mov r8, 0 ; paramter isCopy
mov r10, funTable
call qword ptr[r10 + 187 * 8] ; invoke GetIntArrayElements()
在最后一次调用之后,我应该获得array [0] [0]的正确值,但取而代之的是我获得随机值(每次我重新调试此函数)。 我在做什么错(请注明我的错误-我想学习)。 我可能会补充说,我在搜索某种文档/示例,但效果不佳。