如何解决装配中的选择排序
我正在尝试在x86程序集中实现选择排序。我在Linux环境中使用AT&T语法。我已经编写了算法,但是由于我不太了解汇编程序,所以我不知道如何合并我的输入数组。这是我的代码。
.section .rodata
.result: .string "%d\n" #string that will be used to print array
.data
.arr: .quad 3,4,9,12,1 #initializing array
.text
.global main
selectionSort:
push %rbp
mov %rsp,%rbp
push %rsi
push %rdi
push %rbx
movq $0,%rax
movq $0,%rbx
outerFor:
cmp 12(%rbp),%rax
jge endOuterFor
mov %rax,%rcx
mov %rax,%rdx
add $1,%rdx
innerFor:
cmp 12(%rbp),%rdx
jge endInnerFor
mov 8(%rbp),%rdi
mov (%rdi,%rdx,4),%rsi
condition:
cmp(%rdi,%rcx,%rsi
jge endInnerFor
mov %rdx,%rcx
endCondition:
add $1,%rdx
jmp innerFor
endInnerFor:
mov 8(%rbp),%rdx
mov (%rdx,%rsi
mov (%rdx,%rax,%rdi
mov %rdi,(%rdx,4)
mov %rsi,4)
add %rcx,%rbx
add $1,%rax
jmp outerFor
endOuterFor:
mov %rbx,%rax
pop %rbx
pop %rdi
pop %rsi
pop %rbp
ret
main:
我需要做的是在开始时对数组进行排序,但是我不知道如何将其用作输入。我的代码可能存在错误,但是在处理这些错误之前,我需要查看它如何与输入数组一起运行。关于如何编写主要功能有什么建议吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。