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

深入懂得计算机系统 图5-35没看懂

2013-02-27 
深入理解计算机系统 图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; 

热点排行
Bad Request.