微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

装配中的选择排序

如何解决装配中的选择排序

我正在尝试在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 举报,一经查实,本站将立刻删除。