isa1

Download: isa1.zip

Contents

Source
Shell script
Size summary
Sections
Symbols
Disassembler output
Data section
Simulation

Source: isa1.s

.include "./nios_macros.m"

.data 

.asciz "University of Dayton"

table:
.word  21, 37, 18, 14, 42, 11, 19


.text

.global main
.type main, @function


main:
    movi    r2,10        # a = 10
    movi    r3,14        # b = 14
    sub    r4,r3,r2      # c = b - a
    movi    r6,11        # e = 11
    movi    r7,6         # f = 6
                /* Generate: g = (b + c) - (e + f) */
    add    r8,r3,r4      # g = (b+c)
    add    r9,r7,r8      # tmp = (e+f)
    sub    r8,r8,r9      # g = g - tmp
    addi    r9,r8,3      # h = g + 3
                /* do some logic operations */
    and    r4,r2,r3      # c = a & b
    or    r5,r2,r3       # d = a | b
    nor    r6,r2,r3      # e = ~(a | b)
    xor    r7,r2,r3      # f = a ^ b
    andi    r8,r2,0x3f   # g = a & 0x3f
end:
    br    end        /* wait here once the program has completed */

.end

Shell script

#!/bin/sh
nios2-elf-gcc isa1.s
nios2-elf-size a.out > isa1.size.txt
nios2-elf-objdump -dS a.out > isa1.disassemble.txt
nios2-elf-objdump -h a.out > isa1.headers.txt
nios2-elf-objcopy -S -O binary a.out isa1.bin
nios2-elf-nm a.out > isa1.symbols.txt
nios2-iss -td:isa1.sim.txt --trace-from=main -f a.out
od -Ax -j0x26c -txz isa1.bin > isa1.od.txt
mifwrite isa1.bin isa1.mif 30

Size

   text       data        bss        dec        hex    filename
    622        948          0       1570        622    a.out

Sections


a.out:     file format elf32-littlenios2

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .text         0000026c  00000000  00000000  00000074  2**3
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  1 .rodata       00000002  0000026c  0000026c  000002e0  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, DATA
  2 .data         000003b0  00000270  00000270  000002e2  2**2
                  CONTENTS, ALLOC, LOAD, DATA
  3 .sdata        00000004  00000620  00000620  00000692  2**2
                  CONTENTS, ALLOC, LOAD, DATA, SMALL_DATA
  4 .sbss         00000000  00000624  00000624  00000696  2**0
                  CONTENTS, SMALL_DATA
  5 .bss          00000000  00000624  00000624  00000696  2**0
                  ALLOC
  6 .comment      00000102  00000000  00000000  00000696  2**0
                  CONTENTS, READONLY
  7 .debug_aranges 000000a0  00000000  00000000  00000798  2**0
                  CONTENTS, READONLY, DEBUGGING
  8 .debug_pubnames 000000d6  00000000  00000000  00000838  2**0
                  CONTENTS, READONLY, DEBUGGING
  9 .debug_info   00001499  00000000  00000000  0000090e  2**0
                  CONTENTS, READONLY, DEBUGGING
 10 .debug_abbrev 000004c2  00000000  00000000  00001da7  2**0
                  CONTENTS, READONLY, DEBUGGING
 11 .debug_line   000008b8  00000000  00000000  00002269  2**0
                  CONTENTS, READONLY, DEBUGGING
 12 .debug_frame  000000e4  00000000  00000000  00002b24  2**2
                  CONTENTS, READONLY, DEBUGGING
 13 .debug_str    00000605  00000000  00000000  00002c08  2**0
                  CONTENTS, READONLY, DEBUGGING

Symbols

00000624 A __bss_start
0000023c T __fake_fini
0000006c T __fake_init
00000070 T __start_2
00000624 A _edata
00000624 A _end
00000240 T _exit
0000023c W _fini
00008610 A _gp
00000620 G _impure_ptr
0000006c W _init
00000001 a _nios2_macros_
00000000 T _start
000000b0 T _zero_bss
00000068 t end
000000bc T exit
000002a4 d impure_data
00000030 T main
000001a0 T memset
07ffff00 A nasys_stack_top
00000285 d table

Disassembler output


a.out:     file format elf32-littlenios2

Disassembly of section .text:

00000000 <_start>:
   0:    06c20034     movhi    sp,2048
   4:    deffc004     addi    sp,sp,-256
   8:    def6303a     nor    sp,sp,sp
   c:    dec001d4     ori    sp,sp,7
  10:    def6303a     nor    sp,sp,sp
  14:    06800074     movhi    gp,1
  18:    d6a18404     addi    gp,gp,-31216
  1c:    06000034     movhi    et,0
  20:    c6018904     addi    et,et,1572
  24:    00800034     movhi    r2,0
  28:    10801c04     addi    r2,r2,112
  2c:    1000683a     jmp    r2

00000030 <main>:
  30:    00800284     movi   r2,10
  34:    00c00384     movi   r3,14
  38:    1889c83a     sub    r4,r3,r2
  3c:    018002c4     movi   r6,11
  40:    01c00184     movi   r7,6
  44:    1911883a     add    r8,r3,r4
  48:    3a13883a     add    r9,r7,r8
  4c:    4251c83a     sub    r8,r8,r9
  50:    424000c4     addi   r9,r8,3
  54:    10c8703a     and    r4,r2,r3
  58:    10cab03a     or     r5,r2,r3
  5c:    10cc303a     nor    r6,r2,r3
  60:    10cef03a     xor    r7,r2,r3
  64:    12000fcc     andi   r8,r2,63

00000068 <end>:
  68:    003fff06     br    68 <end>

0000006c <__fake_init>:
  6c:    f800283a     ret

00000070 <__start_2>:
  70:    01000034     movhi    r4,0
  74:    21018904     addi    r4,r4,1572
  78:    01800034     movhi    r6,0
  7c:    31818904     addi    r6,r6,1572
  80:    deffff04     addi    sp,sp,-4
  84:    310dc83a     sub    r6,r6,r4
  88:    000b883a     mov    r5,zero
  8c:    dfc00015     stw    ra,0(sp)
  90:    00000b00     call    b0 <_zero_bss>
  94:    000006c0     call    6c <__fake_init>
  98:    0009883a     mov    r4,zero
  9c:    000b883a     mov    r5,zero
  a0:    000d883a     mov    r6,zero
  a4:    00000300     call    30 <main>
  a8:    1009883a     mov    r4,r2
  ac:    00000bc0     call    bc <exit>

000000b0 <_zero_bss>:
  b0:    02000034     movhi    r8,0
  b4:    42006804     addi    r8,r8,416
  b8:    4000683a     jmp    r8

000000bc <exit>:
  bc:    d0a00417     ldw    r2,-32752(gp)
  c0:    defff804     addi    sp,sp,-32
  c4:    dd800015     stw    r22,0(sp)
  c8:    dfc00715     stw    ra,28(sp)
  cc:    dc000615     stw    r16,24(sp)
  d0:    dc400515     stw    r17,20(sp)
  d4:    dc800415     stw    r18,16(sp)
  d8:    dcc00315     stw    r19,12(sp)
  dc:    dd000215     stw    r20,8(sp)
  e0:    dd400115     stw    r21,4(sp)
  e4:    15005217     ldw    r20,328(r2)
  e8:    202d883a     mov    r22,r4
  ec:    a0002526     beq    r20,zero,184 <exit+0xc8>
  f0:    a0800117     ldw    r2,4(r20)
  f4:    a5402204     addi    r21,r20,136
  f8:    0027883a     mov    r19,zero
  fc:    143fffc4     addi    r16,r2,-1
 100:    8006803a     cmplt    r3,r16,zero
 104:    1800021e     bne    r3,zero,110 <exit+0x54>
 108:    00800044     movi    r2,1
 10c:    1426983a     sll    r19,r2,r16
 110:    1800191e     bne    r3,zero,178 <exit+0xbc>
 114:    800490ba     slli    r2,r16,2
 118:    1025883a     mov    r18,r2
 11c:    1505883a     add    r2,r2,r20
 120:    14400204     addi    r17,r2,8
 124:    00000806     br    148 <exit+0x8c>
 128:    88800017     ldw    r2,0(r17)
 12c:    29400017     ldw    r5,0(r5)
 130:    843fffc4     addi    r16,r16,-1
 134:    94bfff04     addi    r18,r18,-4
 138:    103ee83a     callr    r2
 13c:    8c7fff04     addi    r17,r17,-4
 140:    9827d07a     srai    r19,r19,1
 144:    80000c16     blt    r16,zero,178 <exit+0xbc>
 148:    a8802017     ldw    r2,128(r21)
 14c:    954b883a     add    r5,r18,r21
 150:    b009883a     mov    r4,r22
 154:    14c4703a     and    r2,r2,r19
 158:    103ff31e     bne    r2,zero,128 <exit+0x6c>
 15c:    88800017     ldw    r2,0(r17)
 160:    843fffc4     addi    r16,r16,-1
 164:    94bfff04     addi    r18,r18,-4
 168:    103ee83a     callr    r2
 16c:    8c7fff04     addi    r17,r17,-4
 170:    9827d07a     srai    r19,r19,1
 174:    803ff40e     bge    r16,zero,148 <exit+0x8c>
 178:    a5000017     ldw    r20,0(r20)
 17c:    a03fdc1e     bne    r20,zero,f0 <exit+0x34>
 180:    d0a00417     ldw    r2,-32752(gp)
 184:    10c00f17     ldw    r3,60(r2)
 188:    1800021e     bne    r3,zero,194 <exit+0xd8>
 18c:    b009883a     mov    r4,r22
 190:    00002400     call    240 <_exit>
 194:    1009883a     mov    r4,r2
 198:    183ee83a     callr    r3
 19c:    003ffb06     br    18c <exit+0xd0>

000001a0 <memset>:
 1a0:    008000c4     movi    r2,3
 1a4:    29403fcc     andi    r5,r5,255
 1a8:    2007883a     mov    r3,r4
 1ac:    11801a2e     bgeu    r2,r6,218 <memset+0x78>
 1b0:    2084703a     and    r2,r4,r2
 1b4:    1000181e     bne    r2,zero,218 <memset+0x78>
 1b8:    2806923a     slli    r3,r5,8
 1bc:    200f883a     mov    r7,r4
 1c0:    1946b03a     or    r3,r3,r5
 1c4:    1804943a     slli    r2,r3,16
 1c8:    1886b03a     or    r3,r3,r2
 1cc:    008003c4     movi    r2,15
 1d0:    11800a2e     bgeu    r2,r6,1fc <memset+0x5c>
 1d4:    38c00015     stw    r3,0(r7)
 1d8:    39c00104     addi    r7,r7,4
 1dc:    38c00015     stw    r3,0(r7)
 1e0:    39c00104     addi    r7,r7,4
 1e4:    38c00015     stw    r3,0(r7)
 1e8:    39c00104     addi    r7,r7,4
 1ec:    38c00015     stw    r3,0(r7)
 1f0:    31bffc04     addi    r6,r6,-16
 1f4:    39c00104     addi    r7,r7,4
 1f8:    11bff636     bltu    r2,r6,1d4 <memset+0x34>
 1fc:    008000c4     movi    r2,3
 200:    1180042e     bgeu    r2,r6,214 <memset+0x74>
 204:    38c00015     stw    r3,0(r7)
 208:    31bfff04     addi    r6,r6,-4
 20c:    39c00104     addi    r7,r7,4
 210:    11bffc36     bltu    r2,r6,204 <memset+0x64>
 214:    3807883a     mov    r3,r7
 218:    31bfffc4     addi    r6,r6,-1
 21c:    00bfffc4     movi    r2,-1
 220:    30800426     beq    r6,r2,234 <memset+0x94>
 224:    19400005     stb    r5,0(r3)
 228:    31bfffc4     addi    r6,r6,-1
 22c:    18c00044     addi    r3,r3,1
 230:    30bffc1e     bne    r6,r2,224 <memset+0x84>
 234:    2005883a     mov    r2,r4
 238:    f800283a     ret

0000023c <__fake_fini>:
 23c:    f800283a     ret

00000240 <_exit>:
 240:    defffe04     addi    sp,sp,-8
 244:    dc400015     stw    r17,0(sp)
 248:    dfc00115     stw    ra,4(sp)
 24c:    2023883a     mov    r17,r4
 250:    000023c0     call    23c <__fake_fini>
 254:    8805883a     mov    r2,r17
 258:    003fff06     br    258 <_exit+0x18>
 25c:    dfc00117     ldw    ra,4(sp)
 260:    dc400017     ldw    r17,0(sp)
 264:    dec00204     addi    sp,sp,8
 268:    f800283a     ret

Data Section Contents

00026c 00000043 76696e55 69737265 6f207974  >C...University o<
00027c 61442066 6e6f7479 00000000 00000015  >f Dayton........<
00028c 00000025 00000012 0000000e 0000002a  >%...........*...<
00029c 0000000b 00000013 00000000 0000050c  >................<
0002ac 00000568 000005c4 00000000 00000000  >h...............<
0002bc 00000000 00000000 00000000 00000000  >................<
0002cc 00000000 00000000 00000000 0000026c  >............l...<
0002dc 00000000 00000000 00000000 00000000  >................<
*
00033c 00000000 00000000 00000000 00000001  >................<
00034c 00000000 abcd330e e66d1234 0005deec  >.....3..4.m.....<
00035c 0000000b 00000000 00000000 00000000  >................<
00036c 00000000 00000000 00000000 00000000  >................<
*
00061c 00000000 000002a4                    >........<
000624

Simulation

0x00000030 <main>:        0x00800284  movi r2, 10 [dstData=0xa dstReg=r2]
0x00000034 <main+0x4>:    0x00c00384  movi r3, 14 [dstData=0xe dstReg=r3]
0x00000038 <main+0x8>:    0x1889c83a  sub r4, r3, r2 [dstData=0x4 dstReg=r4]
0x0000003c <main+0xc>:    0x018002c4  movi r6, 11 [dstData=0xb dstReg=r6]
0x00000040 <main+0x10>:   0x01c00184  movi r7, 6 [dstData=0x6 dstReg=r7]
0x00000044 <main+0x14>:   0x1911883a  add r8, r3, r4 [dstData=0x12 dstReg=r8]
0x00000048 <main+0x18>:   0x3a13883a  add r9, r7, r8 [dstData=0x18 dstReg=r9]
0x0000004c <main+0x1c>:   0x4251c83a  sub r8, r8, r9 [dstData=0xfffffffa dstReg=r8]
0x00000050 <main+0x20>:   0x424000c4  addi r9, r8, 3 [dstData=0xfffffffd dstReg=r9]
0x00000054 <main+0x24>:   0x10c8703a  and r4, r2, r3 [dstData=0xa dstReg=r4]
0x00000058 <main+0x28>:   0x10cab03a  or r5, r2, r3 [dstData=0xe dstReg=r5]
0x0000005c <main+0x2c>:   0x10cc303a  nor r6, r2, r3 [dstData=0xfffffff1 dstReg=r6]
0x00000060 <main+0x30>:   0x10cef03a  xor r7, r2, r3 [dstData=0x4 dstReg=r7]
0x00000064 <main+0x34>:   0x12000fcc  andi r8, r2, 63 [dstData=0xa dstReg=r8]
0x00000068 <end>:         0x003fff06  br 0x68 <end>


Maintained by John Loomis, last updated Tue Jul 10 15:47:35 2007