首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 汇编语言 >

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

2012-04-06 
《深入理解计算机系统》 图5-35汇编语句什么意思?void write_read(int *src, int *dest, int n){int cnt n

《深入理解计算机系统》 图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)……

热点排行