深入懂得计算机系统 图5-35没看懂
深入理解计算机系统 图5-35没看懂。void write_read(int *src, int *dest, int n){int cnt nint val 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
谁能给解释一下,这些汇编什么意思?
[解决办法]%eax 和%ecx是寄存器,你这个是Linux环境下的汇编吧。汇编程序完整?
[解决办法]%ecx=dest
%eax=val
%ebx=src
[解决办法]这就相当于X86里的 ax cx通用寄存器 不过这是32位的所以是eax ecx 同样ebx edx也是通用寄存器
[解决办法]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;