x64平台AT&T汇编实现快速排序函数
来源:互联网 发布:程序员第一天上班想哭 编辑:程序博客网 时间:2024/05/16 12:40
代码如下,思路和c实现大同小异,主要是寄存器的使用以及地址的使用,具体参见注释。
#void qsort(int* start, int* end) #start = &a[0], end = &a[n]qsort:lea 4(%rdi), %rax #tmp = &a[1]cmp %rsi, %rax #if tmp >= endjge .L4#then returnpushq %rsi#save rsipushq %rdi#save rdimovl (%rdi), %eax #save first ele.L1:cmp %rsi, %rdi #if start >= endjge .L2#end loopsubq $4, %rsi #--endmovl (%rsi), %ecx #tmp1 = *endcmp %eax, %ecx #if tmp1 >= a[0]jge .L1#loopmovl %ecx, (%rdi) #*start = tmp1.L2:cmp %rsi, %rdi #if start >= endjge .L3#end loopaddq $4, %rdi #++startmovl (%rdi), %ebx #tmp2 = *startcmp %eax, %ebx #if tmp2 <= startjle .L2#loopmovl %ebx, (%rsi) #*start = *endjmp .L1#loop.L3:#if able to jump out of loop, then start = end = then location they meeted movl %eax, (%rdi) #*start = tmppopq %rdi#return startpushq %rsi#save end(the meeting place)call qsort#qsort(start, the meeting place)popq %rdi#set start to the meeting placeaddq $4, %rdi #++startpopq %rsi#recover endcall qsort#qsort(the meeting place, end).L4:ret
0 0
- x64平台AT&T汇编实现快速排序函数
- C指针原理(30)-at&t汇编-快速排序
- 冒泡排序--汇编 IA32 AT&T
- AT&T学习笔记汇编之函数
- AT & T汇编简介
- AT&T 汇编参考
- AT&T汇编格式
- AT & T汇编简介
- AT&T汇编
- AT&T 汇编学习
- AT&T汇编
- AT&&T汇编格式
- AT&T汇编指令
- AT&T 汇编参考
- AT&T汇编
- AT&T汇编格式
- AT&T汇编基础
- AT&T汇编指令
- DB2调用 get_dbsize_info的时候,报错SQL0443N和SQL0572N:
- 2017.03.15
- CodeForces
- Java 之内部类
- 哈希表简介
- x64平台AT&T汇编实现快速排序函数
- Java进阶(五)Java I/O模型从BIO到NIO和Reactor模式
- 莫队算法学习笔记
- 三天打鱼两天晒网
- The SDK platform-tools version (24.0.4) is too old to check APIs compiled with API 25
- UNIX常用命令行指令(3)(基本输入输出操作)
- 《高性能mysql》之MySQL高级特性(第七章)
- Map迭代3种方式
- lowlevel_init.S(u-boot.2012.10 修改整理后)