在c里嵌入汇编玩玩,实现方式也多种多样,细究也会发现效率也千变万化,gcc不同的优化程度也的确很赞,省了好多汇编代码,下面用c和asm汇编实现一个两个无符号64位数的除法,来熟悉下操作,下面上代码!
#include <stdio.h>
#include <stdlib.h>
/*
* x in %rdi y in %rsi qp in %rdx rp in %rcx
* //operateion of 被除数
* movq %rdx, %r1
* movq %rdi, %rax
* cqto
* divq %rsi
* movq %rax, (%r1)
* movq %rdx, (%rcx)
* */
void uremdiv(unsigned long x,unsigned long y,unsigned long* qp,unsigned long* rp)
{
unsigned long q = x / y;