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--
------解决方案--------------------------------------------------------