- 论坛徽章:
- 2
|
回复 84# yulihua49
- long long f(int a, int b) { return a*b; }
复制代码 cl -FA -O2 -c
- mov eax, DWORD PTR _x$[esp-4]
- imul eax, DWORD PTR _y$[esp-4]
- cdq
复制代码 gcc -S -O2 -fomit-frame-pointer
- movl 4(%esp), %edx
- movl 8(%esp), %eax
- imull %edx, %eax
- cltd
- ret
复制代码
- long long g(long long a, long long b) { return (int)a*(int)b; }
复制代码 cl -FA -O2 -c
- mov eax, DWORD PTR _y$[esp-4]
- imul eax, DWORD PTR _x$[esp-4]
- cdq
复制代码 gcc -S -O2 -fomit-frame-pointer
- movl 12(%esp), %eax
- movl 4(%esp), %ecx
- imull %ecx, %eax
- cltd
- ret
复制代码 难道不是 imul ? |
|