这个C乘法函数如何与汇编相对应,它使用什么整数类型?

时间:2018-10-17 03:23:48

标签: assembly x86 att

好的,所以我有一个功能:

void store_prod(num_t *dest, unsigned x, num_t y){
 *dest = x*y;
}

现在,根据这本书,GCC会生成以下汇编代码
(目标为%ebp+8,x为%ebp+12,y为%ebp+16

1. movl 12(%ebp), %eax
2. movl 20(%ebp),%ecx 
3. imull %eax,%ecx 
4. mull 16(%ebp) 
5. leal (%ecx, %edx), %edx
6. movl 8(%ebp),%ecx 
7. movl %eax, (%ecx) 
8. movl %edx, 4(%ecx) 

我需要找出num_t是哪种数据类型,并描述用于计算乘积的算法,并证明它是正确的。

请介意,这不是家庭作业,只是书中的练习题。但是,我很高兴有一些见识,因为未签名与已签名的划分变得越来越模糊。

0 个答案:

没有答案