我在cygwin下的Windows 7机器上以32位模式使用GCC.我有以下功能:
unsigned f1(unsigned x, unsigned y)
{
return x*y;
}
Run Code Online (Sandbox Code Playgroud)
我希望代码执行无符号乘法,因此我希望它生成mul指令,而不是imul指令.我用以下命令编译程序:
gcc -m32 -S t4.c
Run Code Online (Sandbox Code Playgroud)
生成的汇编代码是:
.file "t4.c"
.text
.globl _f1
.def _f1; .scl 2; .type 32; .endef
_f1:
pushl %ebp
movl %esp, %ebp
movl 8(%ebp), %eax
imull 12(%ebp), %eax
popl %ebp
ret
.ident "GCC: (GNU) 4.8.2"
Run Code Online (Sandbox Code Playgroud)
我相信生成的代码中有错误的乘法指令,但我发现很难相信GCC有这么简单的错误.请评论.
| 归档时间: |
|
| 查看次数: |
286 次 |
| 最近记录: |