Create  Edit  Diff  FrontPage  Index  Search  Changes  Login

はじめてのひき - FizzBuzzAsm_SH-4 Diff

  • Added parts are displayed like this.
  • Deleted parts are displayed like this.

! Version

% sh4-linux-gcc41 -v
Using built-in specs.
Target: sh-linux
コンフィグオプション: ../configure --prefix=/usr --program-prefix=sh-linux- --program-suffix=41 --mandir=/usr/share/man --infodir=/usr/sh-linux/share/info --datadir=/usr/sh-linux/share --target=sh-linux --host=i686-redhat-linux-gnu --build=i686-redhat-linux-gnu --with-system-zlib --with-gxx-include-dir=/usr/sh-linux/include/c++/4.1.2 --includedir=/usr/sh-linux/include --enable-checking=release --with-system-zlib --disable-libunwind-exceptions --enable-shared --enable-__cxa_atexit --enable-c99 --enable-threads=posix --enable-long-long --enable-multilib --with-multilib-list=m3,m4,m4-nofpu --with-endian=little --with-cpu=sh3 --enable-languages=c,c++,objc,obj-c++,java --disable-libgcj
スレッドモデル: posix
gcc バージョン 4.1.2 20070925 (Red Hat 4.1.2-33)

! Optimized


fizzbuzz.o:     file format elf32-sh-linux

Disassembly of section .text:

00000000 <main>:
    0: 86 2f       mov.l r8,@-r15
    2: 96 2f       mov.l r9,@-r15
    4: a6 2f       mov.l r10,@-r15
    6: b6 2f       mov.l r11,@-r15
    8: e6 2f       mov.l r14,@-r15
    a: 22 4f       sts.l pr,@-r15
    c: f3 6e       mov r15,r14
    e: 01 e8       mov #1,r8
   10: 00 e9       mov #0,r9
   12: 23 da       mov.l a0 <main+0xa0>,r10 ! 0 <main>
   14: 23 db       mov.l a4 <main+0xa4>,r11 ! 0 <main>
   16: 24 d1       mov.l a8 <main+0xa8>,r1 ! 88888889
   18: 1d 38       dmuls.l r1,r8
   1a: 0a 02       sts mach,r2
   1c: 8c 32       add r8,r2
   1e: fd e1       mov #-3,r1
   20: 1c 42       shad r1,r2
   22: 87 39       cmp/gt r8,r9
   24: 1a 31       subc r1,r1
   26: 18 32       sub r1,r2
   28: 23 61       mov r2,r1
   2a: 04 e0       mov #4,r0
   2c: 0d 41       shld r0,r1
   2e: 28 31       sub r2,r1
   30: 10 38       cmp/eq r1,r8
   32: 04 8b       bf 3e <main+0x3e>
   34: 1d d4       mov.l ac <main+0xac>,r4 ! 0 <main>
   36: 0b 4a       jsr @r10
   38: 01 78       add #1,r8
   3a: 26 a0       bra 8a <main+0x8a>
   3c: 83 60       mov r8,r0
   3e: 1c d1       mov.l b0 <main+0xb0>,r1 ! 66666667
   40: 1d 38       dmuls.l r1,r8
   42: 0a 02       sts mach,r2
   44: 21 42       shar r2
   46: 87 39       cmp/gt r8,r9
   48: 1a 31       subc r1,r1
   4a: 18 32       sub r1,r2
   4c: 23 61       mov r2,r1
   4e: 08 41       shll2 r1
   50: 2c 31       add r2,r1
   52: 10 38       cmp/eq r1,r8
   54: 05 8f       bf.s 62 <main+0x62>
   56: 87 39       cmp/gt r8,r9
   58: 16 d4       mov.l b4 <main+0xb4>,r4 ! c
   5a: 0b 4a       jsr @r10
   5c: 01 78       add #1,r8
   5e: 14 a0       bra 8a <main+0x8a>
   60: 83 60       mov r8,r0
   62: 15 d1       mov.l b8 <main+0xb8>,r1 ! 55555556
   64: 1d 38       dmuls.l r1,r8
   66: 0a 02       sts mach,r2
   68: 1a 31       subc r1,r1
   6a: 18 32       sub r1,r2
   6c: 23 61       mov r2,r1
   6e: 1c 31       add r1,r1
   70: 2c 31       add r2,r1
   72: 10 38       cmp/eq r1,r8
   74: 04 8b       bf 80 <main+0x80>
   76: 11 d4       mov.l bc <main+0xbc>,r4 ! 14
   78: 0b 4a       jsr @r10
   7a: 01 78       add #1,r8
   7c: 05 a0       bra 8a <main+0x8a>
   7e: 83 60       mov r8,r0
   80: 0f d4       mov.l c0 <main+0xc0>,r4 ! 1c
   82: 0b 4b       jsr @r11
   84: 83 65       mov r8,r5
   86: 01 78       add #1,r8
   88: 83 60       mov r8,r0
   8a: 65 88       cmp/eq #101,r0
   8c: c3 8b       bf 16 <main+0x16>
   8e: e3 6f       mov r14,r15
   90: 26 4f       lds.l @r15+,pr
   92: f6 6e       mov.l @r15+,r14
   94: f6 6b       mov.l @r15+,r11
   96: f6 6a       mov.l @r15+,r10
   98: f6 69       mov.l @r15+,r9
   9a: f6 68       mov.l @r15+,r8
   9c: 0b 00       rts
   9e: 09 00       nop
...
a0: R_SH_DIR32 puts
a4: R_SH_DIR32 printf
   a8: 89 88       cmp/eq #-119,r0
   aa: 88 88       cmp/eq #-120,r0
   ac: 00 00       .word 0x0000
ac: R_SH_DIR32 .rodata.str1.4
   ae: 00 00       .word 0x0000
   b0: 67 66       not r6,r6
   b2: 66 66       mov.l @r6+,r6
   b4: 0c 00       mov.b @(r0,r0),r0
b4: R_SH_DIR32 .rodata.str1.4
   b6: 00 00       .word 0x0000
   b8: 56 55       mov.l @(24,r5),r5
   ba: 55 55       mov.l @(20,r5),r5
   bc: 14 00       mov.b r1,@(r0,r0)
bc: R_SH_DIR32 .rodata.str1.4
   be: 00 00       .word 0x0000
   c0: 1c 00       mov.b @(r0,r1),r0
c0: R_SH_DIR32 .rodata.str1.4
...

! Normal


fizzbuzz.o:     file format elf32-sh-linux

Disassembly of section .text:

00000000 <main>:
    0: e6 2f       mov.l r14,@-r15
    2: 22 4f       sts.l pr,@-r15
    4: f0 7f       add #-16,r15
    6: f3 6e       mov r15,r14
    8: e3 62       mov r14,r2
    a: d0 72       add #-48,r2
    c: 01 e1       mov #1,r1
    e: 1f 12       mov.l r1,@(60,r2)
   10: 6e a0       bra f0 <main+0xf0>
   12: 09 00       nop
   14: e3 61       mov r14,r1
   16: d0 71       add #-48,r1
   18: 1f 53       mov.l @(60,r1),r3
   1a: 3c d1       mov.l 10c <main+0x10c>,r1 ! 88888889
   1c: 1d 33       dmuls.l r1,r3
   1e: 0a 01       sts mach,r1
   20: 13 62       mov r1,r2
   22: 3c 32       add r3,r2
   24: fd e1       mov #-3,r1
   26: 1c 42       shad r1,r2
   28: 00 e1       mov #0,r1
   2a: 37 31       cmp/gt r3,r1
   2c: 1a 31       subc r1,r1
   2e: 23 67       mov r2,r7
   30: 18 37       sub r1,r7
   32: 72 2e       mov.l r7,@r14
   34: e2 61       mov.l @r14,r1
   36: 04 e2       mov #4,r2
   38: 2d 41       shld r2,r1
   3a: e2 67       mov.l @r14,r7
   3c: 78 31       sub r7,r1
   3e: 33 62       mov r3,r2
   40: 18 32       sub r1,r2
   42: 22 2e       mov.l r2,@r14
   44: e2 63       mov.l @r14,r3
   46: 38 23       tst r3,r3
   48: 06 8b       bf 58 <main+0x58>
   4a: 31 d1       mov.l 110 <main+0x110>,r1 ! 0 <main>
   4c: 13 64       mov r1,r4
   4e: 31 d1       mov.l 114 <main+0x114>,r1 ! 0 <main>
   50: 0b 41       jsr @r1
   52: 09 00       nop
   54: 45 a0       bra e2 <main+0xe2>
   56: 09 00       nop
   58: e3 61       mov r14,r1
   5a: d0 71       add #-48,r1
   5c: 1f 52       mov.l @(60,r1),r2
   5e: 2e d1       mov.l 118 <main+0x118>,r1 ! 66666667
   60: 1d 32       dmuls.l r1,r2
   62: 0a 01       sts mach,r1
   64: 21 41       shar r1
   66: 13 63       mov r1,r3
   68: 00 e1       mov #0,r1
   6a: 27 31       cmp/gt r2,r1
   6c: 1a 31       subc r1,r1
   6e: 33 67       mov r3,r7
   70: 18 37       sub r1,r7
   72: 71 1e       mov.l r7,@(4,r14)
   74: e1 51       mov.l @(4,r14),r1
   76: 08 41       shll2 r1
   78: e1 53       mov.l @(4,r14),r3
   7a: 3c 31       add r3,r1
   7c: 23 67       mov r2,r7
   7e: 18 37       sub r1,r7
   80: 71 1e       mov.l r7,@(4,r14)
   82: e1 51       mov.l @(4,r14),r1
   84: 18 21       tst r1,r1
   86: 06 8b       bf 96 <main+0x96>
   88: 24 d1       mov.l 11c <main+0x11c>,r1 ! c
   8a: 13 64       mov r1,r4
   8c: 21 d1       mov.l 114 <main+0x114>,r1 ! 0 <main>
   8e: 0b 41       jsr @r1
   90: 09 00       nop
   92: 26 a0       bra e2 <main+0xe2>
   94: 09 00       nop
   96: e3 61       mov r14,r1
   98: d0 71       add #-48,r1
   9a: 1f 52       mov.l @(60,r1),r2
   9c: 20 d1       mov.l 120 <main+0x120>,r1 ! 55555556
   9e: 1d 32       dmuls.l r1,r2
   a0: 0a 03       sts mach,r3
   a2: 00 e1       mov #0,r1
   a4: 27 31       cmp/gt r2,r1
   a6: 1a 31       subc r1,r1
   a8: 33 67       mov r3,r7
   aa: 18 37       sub r1,r7
   ac: 72 1e       mov.l r7,@(8,r14)
   ae: e2 51       mov.l @(8,r14),r1
   b0: 1c 31       add r1,r1
   b2: e2 53       mov.l @(8,r14),r3
   b4: 3c 31       add r3,r1
   b6: 23 67       mov r2,r7
   b8: 18 37       sub r1,r7
   ba: 72 1e       mov.l r7,@(8,r14)
   bc: e2 51       mov.l @(8,r14),r1
   be: 18 21       tst r1,r1
   c0: 06 8b       bf d0 <main+0xd0>
   c2: 18 d1       mov.l 124 <main+0x124>,r1 ! 14
   c4: 13 64       mov r1,r4
   c6: 13 d1       mov.l 114 <main+0x114>,r1 ! 0 <main>
   c8: 0b 41       jsr @r1
   ca: 09 00       nop
   cc: 09 a0       bra e2 <main+0xe2>
   ce: 09 00       nop
   d0: 15 d2       mov.l 128 <main+0x128>,r2 ! 1c
   d2: e3 61       mov r14,r1
   d4: d0 71       add #-48,r1
   d6: 1f 51       mov.l @(60,r1),r1
   d8: 23 64       mov r2,r4
   da: 13 65       mov r1,r5
   dc: 13 d1       mov.l 12c <main+0x12c>,r1 ! 0 <main>
   de: 0b 41       jsr @r1
   e0: 09 00       nop
   e2: e3 62       mov r14,r2
   e4: d0 72       add #-48,r2
   e6: e3 61       mov r14,r1
   e8: d0 71       add #-48,r1
   ea: 1f 51       mov.l @(60,r1),r1
   ec: 01 71       add #1,r1
   ee: 1f 12       mov.l r1,@(60,r2)
   f0: e3 61       mov r14,r1
   f2: d0 71       add #-48,r1
   f4: 1f 52       mov.l @(60,r1),r2
   f6: 64 e1       mov #100,r1
   f8: 17 32       cmp/gt r1,r2
   fa: 01 89       bt 100 <main+0x100>
   fc: 8a af       bra 14 <main+0x14>
   fe: 09 00       nop
  100: 10 7e       add #16,r14
  102: e3 6f       mov r14,r15
  104: 26 4f       lds.l @r15+,pr
  106: f6 6e       mov.l @r15+,r14
  108: 0b 00       rts
  10a: 09 00       nop
  10c: 89 88       cmp/eq #-119,r0
  10e: 88 88       cmp/eq #-120,r0
...
110: R_SH_DIR32 .rodata
114: R_SH_DIR32 puts
  118: 67 66       not r6,r6
  11a: 66 66       mov.l @r6+,r6
  11c: 0c 00       mov.b @(r0,r0),r0
11c: R_SH_DIR32 .rodata
  11e: 00 00       .word 0x0000
  120: 56 55       mov.l @(24,r5),r5
  122: 55 55       mov.l @(20,r5),r5
  124: 14 00       mov.b r1,@(r0,r0)
124: R_SH_DIR32 .rodata
  126: 00 00       .word 0x0000
  128: 1c 00       mov.b @(r0,r1),r0
128: R_SH_DIR32 .rodata
  12a: 00 00       .word 0x0000
  12c: 00 00       .word 0x0000
12c: R_SH_DIR32 printf
...