问题描述
我正在尝试在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 (将#修改为@)