我知道调用者和被调用函数的所有约定规则,因为我已经浏览了这个链接(http://flint.cs.yale.edu/cs421/papers/x86-asm/asm.html)。但有一点我没有得到的是如何打电话,直到现在我正在使用这个代码。这可能是错误的方式,因为我第一次尝试这个。
.data
arr : .quad 25,35,99,24,5,1,13,42,34
.text
.globl main
.type main,@function
main:
call sort
movq $60,%rax # syscall for exit
movq $0, %rbx
syscall # calling interrupt to exit
.globl sort
.type sort,@function
sort:
movq $1,%rax
ret
但是当我使用gdb来调试sort时,从来没有调用过。实际上我必须在程序集中执行选择排序我已经编写了一个工作程序链接(https://pastebin.com/P7qZAezd)但是在这里我使用的标签不是函数。此外,我没有在我的函数调用中遵循调用者和被调用者的任何约定,因为我只是在测试。任何人都可以告诉我如何做到这一点。