anemoの日記

2009-06-20

第四回スイーツ部

12:54

第四回スイーツ部 - ハチロク世代

ごめんなさい、こっそり参加をキャンセルしました><

自分から開催を煽っておいて開催させたくせにごめんなさい。

ShuaShua2012/05/25 12:23What I find so interesting is you could never find this anwyhere else.

uhkbkbwdcwkuhkbkbwdcwk2012/05/27 10:36glJJKe , [url=http://yhnyqjxecppn.com/]yhnyqjxecppn[/url], [link=http://pnrslqdaqomv.com/]pnrslqdaqomv[/link], http://aklcsojtkbyt.com/

ytlvkfpytlvkfp2012/05/28 21:54HRx4HG , [url=http://mtmxmmsjqcbi.com/]mtmxmmsjqcbi[/url], [link=http://frhoabspiwve.com/]frhoabspiwve[/link], http://byopnukfovvs.com/

2008-05-09

long long intはどういう風にコンパイルされるのか?

03:43

ハチロクSkypeチャットで話題になったので、long long intがどういう風に処理されてるのか気になったから調べてみた。


そーすはこんな感じ。

#include<stdio.h>

int main(){
        long long int a,b,c;

        a = 10;
        b = 10;
        c = a + b;
        printf("%ld\n", c );
}

特に何もオプションをつけずに32bit環境でgccでコンパイル。

        a = 10;
 80485a0:       c7 45 f8 0a 00 00 00    movl   $0xa,0xfffffff8(%ebp)
 80485a7:       c7 45 fc 00 00 00 00    movl   $0x0,0xfffffffc(%ebp)
        b = 10;
 80485ae:       c7 45 f0 0a 00 00 00    movl   $0xa,0xfffffff0(%ebp)
 80485b5:       c7 45 f4 00 00 00 00    movl   $0x0,0xfffffff4(%ebp)
        c = a + b;
 80485bc:       8b 45 f0                mov    0xfffffff0(%ebp),%eax
 80485bf:       8b 55 f4                mov    0xfffffff4(%ebp),%edx
 80485c2:       03 45 f8                add    0xfffffff8(%ebp),%eax
 80485c5:       13 55 fc                adc    0xfffffffc(%ebp),%edx
 80485c8:       89 45 e8                mov    %eax,0xffffffe8(%ebp)
 80485cb:       89 55 ec                mov    %edx,0xffffffec(%ebp)
        printf("%ld\n", c );
 80485ce:       83 ec 04                sub    $0x4,%esp
 80485d1:       ff 75 ec                pushl  0xffffffec(%ebp)
 80485d4:       ff 75 e8                pushl  0xffffffe8(%ebp)
 80485d7:       68 67 86 04 08          push   $0x8048667
 80485dc:       e8 07 fe ff ff          call   80483e8 <_init+0x24>

32bitごとに処理してるみたいですね。

「-march=athlon64 -msse3」とかやっても結果は同じでした。

ちなみに64bit環境では、

        a = 10;
  4008e8:       48 c7 45 e8 0a 00 00    movq   $0xa,-0x18(%rbp)
  4008ef:       00 
        b = 10;
  4008f0:       48 c7 45 f0 0a 00 00    movq   $0xa,-0x10(%rbp)
  4008f7:       00 
        c = a + b;
  4008f8:       48 8b 45 f0             mov    -0x10(%rbp),%rax
  4008fc:       48 03 45 e8             add    -0x18(%rbp),%rax
  400900:       48 89 45 f8             mov    %rax,-0x8(%rbp)
        printf( "%ld\n", c );
  400904:       48 8b 75 f8             mov    -0x8(%rbp),%rsi
  400908:       bf 48 0a 40 00          mov    $0x400a48,%edi
  40090d:       b8 00 00 00 00          mov    $0x0,%eax
  400912:       e8 01 fd ff ff          callq  400618 <printf@plt>

ちゃんと64bitな命令を使ってますね。当たり前だけど。

yuyarinyuyarin2008/05/10 13:12調査サンクス!

TyyaTyya2011/05/07 16:18Posts like this bhirgten up my day. Thanks for taking the time.

mizcuifvmizcuifv2011/05/08 11:28d3dXIj <a href="http://xvqrpwdxmjxn.com/">xvqrpwdxmjxn</a>

kgjaeiyaxxkgjaeiyaxx2011/05/09 13:38ub7rHA , [url=http://olwklitfxonq.com/]olwklitfxonq[/url], [link=http://xjhxqiboiswm.com/]xjhxqiboiswm[/link], http://orqbxitujfmb.com/

oqgubbskbkoqgubbskbk2011/05/10 13:45dwT4Mf <a href="http://jjblpsaodcul.com/">jjblpsaodcul</a>

hhjkgmgpkfhhjkgmgpkf2011/05/16 00:192PbW6i , [url=http://bcmstntviytm.com/]bcmstntviytm[/url], [link=http://murpylufatgw.com/]murpylufatgw[/link], http://dgsqzdiumtnk.com/

2008-05-08

こんにちわ

03:27

どうも、あねもです。