assembly 数组中的函数地址错误

sq1bmfud  于 2023-04-30  发布在  其他
关注(0)|答案(1)|浏览(95)

我有这个代码在我的。数据部分:

sort_list dq __imp_bubbleSort, __imp_insertionSort, __imp_quickSort, __imp_selectionSort, __imp_shakerSort
cur_sort dq 1

我从dll导入的这些函数:

extern __imp_bubbleSort:qword
extern __imp_shakerSort:qword
extern __imp_quickSort:qword
extern __imp_selectionSort:qword
extern __imp_insertionSort:qword

在函数中,我试着这样调用这个函数:

SortThread proc
local demmy:qword
sub rsp, stacksz
mov bSorting, 1
mov rcx, p_arr
mov rdx, arrsize
mov rax, cur_sort
mov rbx, sort_list
call qword ptr [rbx + rax * 8]
mov bSorting, 0
ret
SortThread endp

对于[rbx+0 * 8]它是正确的我的冒泡排序函数,但对于[rbx+1 * 8]我得到错误的函数,但这个函数也在我的dll中。.所以首先是我的sort_list中的地址错误。为什么?如果你需要dll中的函数代码,请随时告诉我.

w3nuxt5m

w3nuxt5m1#

哎呀,我把指针弄得有点乱。现在起作用了!

mov rbx, offset sort_list
mov rax, [rbx + rax * 8]
call qword ptr [rax]

相关问题