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

深入理解计算机系统 图5-35没看懂。该怎么处理

2012-04-13 
深入理解计算机系统 图5-35没看懂。[codeC/C++][/code]void write_read(int *src, int *dest, int n){int

深入理解计算机系统 图5-35没看懂。
[code=C/C++][/code]
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;

热点排行