当前位置: 代码迷 >> 汇编语言 >> 《深入理解计算机系统》 图5-35汇编语句什么意思?解决方法
  详细解决方案

《深入理解计算机系统》 图5-35汇编语句什么意思?解决方法

热度:7675   发布时间:2013-02-26 00:00:00.0
《深入理解计算机系统》 图5-35汇编语句什么意思?
void write_read(int *src, int *dest, int n)
{
  int cnt = n;
  int val = 0;

  while (cnt--)
  {
  *dest = val;
  val = (*src) + 1;
  }
}

//图5-35 给出的write_read内循环代码的汇编语句是
movl %eax, (%ecx) //不知道%eax, ecx 代表什么意思
movl (%ebx), %eax  
addl $1, %eax  
subl $1 %edx //sub1 是减法的意思,%edx 估计cnt

谁能给解释一下,这些汇编什么意思?

------解决方案--------------------------------------------------------

movl %eax,(%ecx) //将%eax的值存放到%ecx中 即*dest=val %eax=val %ecx=dest;
movl (%ebx),%eax //将%ebx的值存放到%eax中 即val=*src %ebx=src;
addl $1,%eax // %eax +1 即val=val+1 与上一行合并就是 val=(*src)+1;
subl $1,%edx //%edx-1 即%edx=cnt; 

这四个通用寄存器eax,ebx,ecx,edx分别表示 val,src,dest,cnt
------解决方案--------------------------------------------------------
subl $1,%edx //就是 cnt--
------解决方案--------------------------------------------------------
探讨
movl %eax,(%ecx) //将%eax的值存放到%ecx中 即*dest=val %eax=val %ecx=dest;
movl (%ebx),%eax //将%ebx的值存放到%eax中 即val=*src %ebx=src;
addl $1,%eax // %eax +1 即val=val+1 与上一行合并就是 val=(*src)……
  相关解决方案