我刚刚在Linux上的x86-64程序集中完成了一个合并排序的工作实现(我通过在使用GDB执行后检查内存来确认这一点,并且我目前正在尝试添加功能,以通过链接和调用printf。
但是,我注意到,在我的“ section .text”声明前直接添加“ extern printf”行之后,不再对mergesort产生的数组进行排序(使用gcc时,我确保链接到libc)。
这是我的代码的示例(当前,printarr除了返回外不执行任何操作,在调用mergesort之后,我使用GDB断点检查内存):
extern printf ; including this line breaks mergesort functionality
section .text
global _start
_start:
; This is the main function
mov dl, byte [right]
mov sil, byte [left]
mov rdi, testarr
call mergesort
mov rsi, 7
call printarr
mov rax, SYS_EXIT
syscall
不能