首页 > 代码库 > Using assembly writing algorithm programs
Using assembly writing algorithm programs
This‘s my first version.The logic is simple, just the selection sort.
I spent much time learning how to write AT&T assembly on 64-bit Linux.almost all books just talk about 32-bit assembly.
Such as registers, on 64-bit linux, rax, rbx, rcx..... are all 8 bytes. not like eax,ebx,ecx 4 bytes.
And the differences with the use of libraries such as printf.32-bit AT&T assembly push the parameters before calling printf.but 64-bit AT&T assembly saving the parameters in registers such as rsi or rdi before calling printf.
movq .quad 8bytes 64-bit
movl .long 4bytes 32-bit
movw .word 2bytes 16-bit
movb .byte 1bytes 8-bit
# func: selection sort algorithm # by whoami# Oct 1-4 2016# rdx --- i, rax --- min, rcx --- j, rbx --- tmp.section .datadata_item: .quad 3,67,34,222,45,75,54,34,44,33,22,11,66,0before_sort: .asciz "sorted nums:\n"sort_output_format: .asciz "%d\n".section .text.globl _start_start: movq $0, %rdx out_loop: # outer loop movq %rdx, %rax movq data_item(,%rdx,8), %rbx # if arr[i] == 0 print all nums sorted and exit. cmp $0, %rbx je print_arr movq %rdx, %rcx incq %rcx inner_loop: # inner loop, get the min-value cmp $0, data_item(,%rcx,8) je inner_loop_exit movq data_item(,%rax,8), %rbx cmp %ebx, data_item(,%rcx,8) jg not_change_min movq %rcx, %rax not_change_min: incq %rcx jmp inner_loop inner_loop_exit: movq data_item(,%rdx,8), %rbx # swap the value, of arr[i] and the min-value. movq data_item(,%rax,8), %rdi movq %rdi, data_item(,%rdx,8) movq %rbx, data_item(,%rax,8) incq %rdx jmp out_loop # inner loop exits.print_arr: movq $0, %rbx # print ‘sorted nums:‘ movq $before_sort, %rdi call printf print_loop: # print all nums sorted in a loop movq data_item(,%rbx,8),%rax cmp $0, %rax je end movq $sort_output_format, %rdi movq %rax, %rsi call printf incq %rbx jmp print_loopend: # program ends. movq $127, %rdi movq $60, %rax syscall
Using assembly writing algorithm programs
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。