From d842fa2a5fc2b3c64b13ddce31af6d8f2cfc48b5 Mon Sep 17 00:00:00 2001 From: Strozzi <laps15@inf.ufpr.br> Date: Tue, 7 Jun 2016 09:06:28 -0300 Subject: [PATCH] finish tranmission tests --- cMIPS/tests/data.bin | Bin 0 -> 66176 bytes cMIPS/tests/handlerUART.s | 34 +-- cMIPS/tests/mainTrans.c | 149 ++++++++++++ cMIPS/tests/mainTrans.elf | Bin 0 -> 23424 bytes cMIPS/tests/mainTrans.map | 173 ++++++++++++++ cMIPS/tests/mainTrans.o | Bin 0 -> 3032 bytes cMIPS/tests/mainTrans.s | 474 ++++++++++++++++++++++++++++++++++++++ cMIPS/tests/prog.bin | Bin 80 -> 4144 bytes 8 files changed, 814 insertions(+), 16 deletions(-) create mode 100644 cMIPS/tests/mainTrans.c create mode 100755 cMIPS/tests/mainTrans.elf create mode 100644 cMIPS/tests/mainTrans.map create mode 100644 cMIPS/tests/mainTrans.o create mode 100644 cMIPS/tests/mainTrans.s diff --git a/cMIPS/tests/data.bin b/cMIPS/tests/data.bin index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..361f7170d993098fc6007255f1bddd4666d1671e 100644 GIT binary patch literal 66176 zcmd<$G%!%mRmjXMNi8ZWEhypQV&LL5FjUZ0NUcatEhx#%&w~gVDd;K`6y=wsCWFKj z$};nF5<x78tg(WwLUC$(Zfaf$SX3b`u`~y2m<iZ?h2qrY{JfOJqDqC_)ZF}{N-i!2 zFkoR2W?*4ZV_;!$VPIiMU|?ZjWMBYeCI$uuW(EcZRt5$J4h9AWUIqpRQ3eJEB?blt za|Q;6NCpOm2@DJjFBupZDj69Vl9(76ZZk75*s?J&NN_PQgbFY)<VrCx9MWQ7(065E z_?XYYps<yJK~R;E!SEI%gVTQ|hT@wn3|nuoGiYq$VYu5R!oX^)$nfa6DZ_J?aE6m- zdKflbe9TZeuYggrAcScV-%;k%b&_nkz4tgRcz*CNoq0|2?$UFbU~h~PqaiRF0;3@? z8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O zqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF z0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71* zAut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@? z8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O zqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF z0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71* zAut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@? z8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O zqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?!~rt{ z0|Ofa1A{Y^Zido_p)?~S0|N^K1A`-!ZiLbYp)?~CR31t<Lg|B0nvoeQ52YKS^g$>+ z#Dj0hJD**Efq{#Gfx#V0w?paUP?}v3Di5XGq4aSm%`OC$htlm(`Z$zk7lz71>2@f6 H97+QKWvy8m literal 0 HcmV?d00001 diff --git a/cMIPS/tests/handlerUART.s b/cMIPS/tests/handlerUART.s index d92eaf5..77e018e 100644 --- a/cMIPS/tests/handlerUART.s +++ b/cMIPS/tests/handlerUART.s @@ -9,50 +9,52 @@ sw $a2, 7*4($k0) sw $a3, 8*4($k0) sw $v0, 9*4($k0) - - jal disableInterr #$v0 = status - nop + sw $ra, 10*4($k0) andi $a1, $k1, UART_rx_irq # Is this reception? - beq $a1, $zero, UARTrxinter # no, maybe transmission? + bne $a1, $zero, UARTrxinter # no, maybe transmission? nop andi $a1, $k1, UART_tx_irq # Is this transmission? - bne $a1, $zero, UARTret # no, it was nothing + beq $a1, $zero, UARTret # no, it was nothing nop lui $a2, %hi(ntx) ori $a2, $a2, %lo(ntx) lw $a1, 0($a2) +# jal print +# move $a0, $a1 + +# lui $a0, %hi(HW_uart_addr)# get device's addres +# ori $a0, $a0, %lo(HW_uart_addr) + li $a3, 16 - beq $a3, $a1, overrun # empty Q + beq $a3, $a1, endUH # empty Q nop addi $a1, $a1, 1 sw $a1, 0($a2) # update ntx, one more free space - # STORE AND THEN INCREMENTS + # INCREMENTS AND THEN LOAD lui $a2, %hi(tx_q) ori $a2, $a2, %lo(tx_q) - lui $a1, %hi(tx_hd) ori $a1, $a1, %lo(tx_hd) lw $a3, 0($a1) nop + addi $a3, $a3, 1 #increment Q head + andi $a3, $a3, 0xf # modulo 16 + sw $a3, 0($a1) # store new head index add $a2, $a2, $a3 # a2 <- &(tx_q[tx_hd]) lb $a3, 0($a2) # get char from Q head nop - addi $a3, $a3, 1 #increment Q head - andi $a3, $a3, 0xf # modulo 16 - sw $a3, 0(a1) # store new head index - sw $a2, 0(a0) # write char in txreg + sw $a3, 1*4($a0) # write char in txreg -endHU: +endUH: - jal enableInterr - nop + lw $ra, 10*4($k0) lw $v0, 9*4($k0) lw $a3, 8*4($k0) b UARTret @@ -107,7 +109,7 @@ overrun: #... (doing absolutely nothing besides stacking and unstacking regs) lw $a1, 0*4($k0) # get status from memory nop - andi $a1, $a1, 0xFFFFFFF1 # set overun bit to 1 + ori $a1, $a1, 0x00000001 # set overun bit to 1 # sw $a1, ??? ---+ Dunno where to save Status b endUH # | nop # <--+ diff --git a/cMIPS/tests/mainTrans.c b/cMIPS/tests/mainTrans.c new file mode 100644 index 0000000..1f3b0aa --- /dev/null +++ b/cMIPS/tests/mainTrans.c @@ -0,0 +1,149 @@ +#include "cMIPS.h" +#include "../include/vetorFib.h" +#include "../include/structUart.h" + +#define OBOUND_MESG "Out of bounds\n" +#define OVERUN_MESG "Overun\n" +#define MAXPOW 7 +#define SPEED 1 +#define COUNT ((SPEED+1)*100) + +// ----------------------- begin driver? +extern UARTdriver Ud; +volatile Tserial *uart; +#if 0 +int proberx () { + return Ud.nrx; +} + +int probetx () { + return Ud.ntx; +} + +void ioctl (int c) { + uart->cs.ctl = (Tcontrol)c; +} + +int iostat() { + return (int)uart->cs.stat; +} +#endif +int Putc (char c) { + int ntx = Ud.ntx; + if (ntx == 0) + return 0; + if (ntx == 16 && uart->cs.stat.txEmpty) // Empty Q && Tx + uart->d.tx = (unsigned int) c; // 32-bits + else { // Sending smthng + disableInterr(); + Ud.ntx--; + // INCREMENTS AND THEN STORE + Ud.tx_tl = (Ud.tx_tl+1)&0xF; // modulo 16 + Ud.tx_q[Ud.tx_tl] = c; + enableInterr(); + } + return 1; +} +// ------------------------- end driver? +// ------------------------- begin main() +int Strlen (char *c) { + int i= 0; + while(c[i++]-10); + return i-1; +} + +int pow16 (int ex) { + int i, ret=1; + for (i= 0; i< ex/2; i++) + ret*=16; + ret *= ret; + return (ex%2?ret*16:ret); +} + +int hex2int (char *hex) { + int s= Strlen(hex), i, ans= 0; + #if 0 + Test Signal... + switch (hex[0]) { + case 'F': + case 'f': + case 'E': + case 'e': + case 'D': + case 'd': + case 'C': + case 'c': + case 'B': + case 'b': + case 'A': + case 'a': + case '9': + ans = hex[0]*pow16(s-1); + } + #endif + for (i= 0; i< s; i++) { + hex[i]-= 48; + if (hex[i] > 9) + hex[i] -= 7; + if (hex[i] > 15) + hex[i] -= 32; + ans += hex[i] * pow16(s-(i+1)); + } + return ans; +} + +int int2hex (char *c, int i) { + int j= 0, val; + int p; + p = pow16(MAXPOW); + while (p > 0) { + val= 0; + if (i/p) { + val= i/p; + i%= p; + } + if ((val < 10) && (j || val)) { // impede que '0' sejam escritos à esquerda + c[j++] = val+'0'; + } + else if (val > 9) + c[j++] = 'a'+ (val-10); + p/=16; + } + c[j] = 10; + return j-1; +} + +int main () { + Tcontrol ctrl; + char p[15]; + int fib, j, s, val, rx, sent; + volatile int *counter; + + counter = (int *)IO_COUNT_ADDR; + uart= (void *)IO_UART_ADDR; + // initialize UART control + ctrl.rts= 0; + ctrl.intTX= 1; // Both interruption + ctrl.intRX= 0; + ctrl.speed= SPEED; + uart->cs.ctl = ctrl; + + Ud.ntx = 16; + for (fib= 0; fib< 44; fib++) { + int2hex(p, buf[fib]); + j= -1; + do { + j++; + while (((rx = Ud.nrx) != 16) && (!Putc(p[j]))); + if (rx == 16) { + // Empty it + j--; + } + } while (p[j] != 0); + } + + startCounter (COUNT , 0); + while ((val= (readCounter() && 0x3FFFFFFF)) < COUNT); + + return val; +} diff --git a/cMIPS/tests/mainTrans.elf b/cMIPS/tests/mainTrans.elf new file mode 100755 index 0000000000000000000000000000000000000000..a73f99acc6b431bc192157a69ccb28fed6608503 GIT binary patch literal 23424 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 V)RjOsPa>Fs!4%x)0O>;XB>)Mw(T)HB literal 0 HcmV?d00001 diff --git a/cMIPS/tests/mainTrans.map b/cMIPS/tests/mainTrans.map new file mode 100644 index 0000000..ecfd517 --- /dev/null +++ b/cMIPS/tests/mainTrans.map @@ -0,0 +1,173 @@ + +Allocating common symbols +Common symbol size file + +_excp_saves 0x40 /home/bcc/laps15/nobackup/TrabRob/cmips/cMIPS/include/start.o +uart 0x4 mainTrans.o + +Discarded input sections + + .reginfo 0x0000000000000000 0x18 /home/bcc/laps15/nobackup/TrabRob/cmips/cMIPS/include/handlers.o + .MIPS.abiflags + 0x0000000000000000 0x18 /home/bcc/laps15/nobackup/TrabRob/cmips/cMIPS/include/handlers.o + .reginfo 0x0000000000000000 0x18 /home/bcc/laps15/nobackup/TrabRob/cmips/cMIPS/include/cMIPSio.o + .MIPS.abiflags + 0x0000000000000000 0x18 /home/bcc/laps15/nobackup/TrabRob/cmips/cMIPS/include/cMIPSio.o + .reginfo 0x0000000000000000 0x18 mainTrans.o + .MIPS.abiflags + 0x0000000000000000 0x18 mainTrans.o + +Memory Configuration + +Name Origin Length Attributes +rom 0x0000000000000000 0x0000000000004000 xr +ram 0x0000000000040000 0x0000000000020000 !xr +sdram 0x0000000004000000 0x0000000002000000 !xr +io 0x000000003c000000 0x0000000000020000 !xr +*default* 0x0000000000000000 0xffffffffffffffff + +Linker script and memory map + + +.text 0x0000000000000000 0x1030 + *(.text .text.*) + .text 0x0000000000000000 0x524 /home/bcc/laps15/nobackup/TrabRob/cmips/cMIPS/include/start.o + 0x0000000000000000 _start + 0x00000000000000f4 exit + 0x00000000000000f4 _exit + 0x0000000000000130 _excp_0000 + 0x0000000000000200 _excp_0100 + 0x0000000000000280 _excp_0180 + 0x0000000000000334 _excp_0180ret + 0x0000000000000400 _excp_0200 + 0x00000000000004e0 _excp_BFC0 + 0x0000000000000500 PT_update + .text 0x0000000000000524 0x464 /home/bcc/laps15/nobackup/TrabRob/cmips/cMIPS/include/handlers.o + 0x0000000000000524 extCounter + 0x0000000000000564 UARTinterr + 0x00000000000006b8 countCompare + 0x00000000000006d4 enableInterr + 0x00000000000006ec disableInterr + 0x0000000000000708 handle_Mod + 0x0000000000000808 handle_TLBL + 0x00000000000008bc TLB_purge + 0x0000000000000920 cmips_delay + 0x0000000000000938 cmips_kmsg + .text 0x0000000000000988 0x2e8 /home/bcc/laps15/nobackup/TrabRob/cmips/cMIPS/include/cMIPSio.o + 0x0000000000000988 from_stdin + 0x0000000000000998 to_stdout + 0x00000000000009a8 print + 0x00000000000009b4 readInt + 0x00000000000009dc writeInt + 0x00000000000009e8 writeClose + 0x00000000000009f8 dumpRAM + 0x0000000000000a08 readStats + 0x0000000000000a10 memcpy + 0x0000000000000b38 memset + 0x0000000000000c14 startCounter + 0x0000000000000c44 stopCounter + 0x0000000000000c60 readCounter + .text 0x0000000000000c70 0x3c0 mainTrans.o + 0x0000000000000c70 Putc + 0x0000000000000d28 Strlen + 0x0000000000000d54 pow16 + 0x0000000000000da8 hex2int + 0x0000000000000e7c int2hex + 0x0000000000000f4c main + 0x0000000000001030 _etext = . + +.data 0x0000000000040000 0x148 + 0x0000000000040000 _bdata = . + *(.data .data.*) + .data 0x0000000000040000 0x0 /home/bcc/laps15/nobackup/TrabRob/cmips/cMIPS/include/start.o + .data 0x0000000000040000 0x94 /home/bcc/laps15/nobackup/TrabRob/cmips/cMIPS/include/handlers.o + 0x0000000000040080 _kmsg_list + .data 0x0000000000040094 0x0 /home/bcc/laps15/nobackup/TrabRob/cmips/cMIPS/include/cMIPSio.o + .data 0x0000000000040094 0xb4 mainTrans.o + 0x0000000000040094 buf + 0x0000000000040148 _edata = . + +.data1 + *(.data1) + +.rodata + *(.rodata .rodata.*) + +.MIPS.abiflags 0x0000000000040148 0x18 + .MIPS.abiflags + 0x0000000000040148 0x18 /home/bcc/laps15/nobackup/TrabRob/cmips/cMIPS/include/start.o + +.rodata1 + *(.rodata1) + +.lit8 + *(.lit8) + +.lit4 + *(.lit4) + +.sdata + *(.sdata .sdata.*) + +.sbss 0x0000000000040160 0x4 + *(.sbss .sbss.*) + *(.scommon .scommon.*) + .scommon 0x0000000000040160 0x4 mainTrans.o + 0x0000000000040160 uart + +.bss 0x0000000000040170 0xf0 + *(.bss .bss.*) + .bss 0x0000000000040170 0x0 /home/bcc/laps15/nobackup/TrabRob/cmips/cMIPS/include/start.o + .bss 0x0000000000040170 0xac /home/bcc/laps15/nobackup/TrabRob/cmips/cMIPS/include/handlers.o + 0x0000000000040170 _counter_val + 0x0000000000040194 Ud + 0x00000000000401cc _uart_buff + .bss 0x000000000004021c 0x0 /home/bcc/laps15/nobackup/TrabRob/cmips/cMIPS/include/cMIPSio.o + .bss 0x000000000004021c 0x0 mainTrans.o + *(COMMON) + *fill* 0x000000000004021c 0x4 + COMMON 0x0000000000040220 0x40 /home/bcc/laps15/nobackup/TrabRob/cmips/cMIPS/include/start.o + 0x0000000000040220 _excp_saves + 0x0000000000040260 _end = . + 0x0000000000020000 end_RAM = 0x20000 + 0x0000000000010000 half_RAM = (end_RAM / 0x2) + 0x0000000000050000 base_PT = (_bdata + half_RAM) + +.PT 0x0000000000050000 0x280 + *(.PT) + .PT 0x0000000000050000 0x280 /home/bcc/laps15/nobackup/TrabRob/cmips/cMIPS/include/start.o + 0x0000000000050000 _PT +LOAD /home/bcc/laps15/nobackup/TrabRob/cmips/cMIPS/include/start.o +LOAD /home/bcc/laps15/nobackup/TrabRob/cmips/cMIPS/include/handlers.o +LOAD /home/bcc/laps15/nobackup/TrabRob/cmips/cMIPS/include/cMIPSio.o +LOAD mainTrans.o +OUTPUT(mainTrans.elf elf32-littlemips) + +.reginfo 0x0000000000000000 0x18 + .reginfo 0x0000000000000000 0x18 /home/bcc/laps15/nobackup/TrabRob/cmips/cMIPS/include/start.o + +.pdr 0x0000000000000000 0x480 + .pdr 0x0000000000000000 0xe0 /home/bcc/laps15/nobackup/TrabRob/cmips/cMIPS/include/start.o + .pdr 0x00000000000000e0 0x140 /home/bcc/laps15/nobackup/TrabRob/cmips/cMIPS/include/handlers.o + .pdr 0x0000000000000220 0x1a0 /home/bcc/laps15/nobackup/TrabRob/cmips/cMIPS/include/cMIPSio.o + .pdr 0x00000000000003c0 0xc0 mainTrans.o + +.gnu.attributes + 0x0000000000000000 0x10 + .gnu.attributes + 0x0000000000000000 0x10 /home/bcc/laps15/nobackup/TrabRob/cmips/cMIPS/include/start.o + .gnu.attributes + 0x0000000000000010 0x10 /home/bcc/laps15/nobackup/TrabRob/cmips/cMIPS/include/handlers.o + .gnu.attributes + 0x0000000000000020 0x10 /home/bcc/laps15/nobackup/TrabRob/cmips/cMIPS/include/cMIPSio.o + .gnu.attributes + 0x0000000000000030 0x10 mainTrans.o + +.mdebug.abi32 0x0000000000000000 0x0 + .mdebug.abi32 0x0000000000000000 0x0 /home/bcc/laps15/nobackup/TrabRob/cmips/cMIPS/include/cMIPSio.o + .mdebug.abi32 0x0000000000000000 0x0 mainTrans.o + +.comment 0x0000000000000000 0x11 + .comment 0x0000000000000000 0x11 /home/bcc/laps15/nobackup/TrabRob/cmips/cMIPS/include/cMIPSio.o + 0x12 (size before relaxing) + .comment 0x0000000000000011 0x12 mainTrans.o diff --git a/cMIPS/tests/mainTrans.o b/cMIPS/tests/mainTrans.o new file mode 100644 index 0000000000000000000000000000000000000000..7b0f84a19d6b095e28ed48af6e11de6010057046 GIT binary patch literal 3032 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 literal 0 HcmV?d00001 diff --git a/cMIPS/tests/mainTrans.s b/cMIPS/tests/mainTrans.s new file mode 100644 index 0000000..3cc53c6 --- /dev/null +++ b/cMIPS/tests/mainTrans.s @@ -0,0 +1,474 @@ + .file 1 "mainTrans.c" + .section .mdebug.abi32 + .previous + .nan legacy + .module fp=32 + .module nooddspreg + .text + .align 2 + .globl Putc + .set nomips16 + .set nomicromips + .ent Putc + .type Putc, @function +Putc: + .frame $sp,24,$31 # vars= 0, regs= 2/0, args= 16, gp= 0 + .mask 0x80010000,-4 + .fmask 0x00000000,0 + .set noreorder + .set nomacro + lui $2,%hi(Ud+52) + lw $2,%lo(Ud+52)($2) + nop + beq $2,$0,$L4 + li $3,16 # 0x10 + + addiu $sp,$sp,-24 + sw $31,20($sp) + sw $16,16($sp) + sll $16,$4,24 + bne $2,$3,$L3 + sra $16,$16,24 + + lui $2,%hi(uart) + lw $3,%lo(uart)($2) + nop + lw $2,0($3) + nop + sll $2,$2,25 + bgez $2,$L3 + nop + + sw $16,4($3) + b $L2 + li $2,1 # 0x1 + +$L3: + jal disableInterr + nop + + lui $2,%hi(Ud) + addiu $4,$2,%lo(Ud) + lw $2,52($4) + nop + addiu $2,$2,-1 + sw $2,52($4) + lw $3,28($4) + nop + addiu $3,$3,1 + andi $2,$3,0xf + sw $2,28($4) + addu $2,$2,$4 + jal enableInterr + sb $16,32($2) + + b $L2 + li $2,1 # 0x1 + +$L4: + j $31 + move $2,$0 + +$L2: + lw $31,20($sp) + lw $16,16($sp) + j $31 + addiu $sp,$sp,24 + + .set macro + .set reorder + .end Putc + .size Putc, .-Putc + .align 2 + .globl Strlen + .set nomips16 + .set nomicromips + .ent Strlen + .type Strlen, @function +Strlen: + .frame $sp,0,$31 # vars= 0, regs= 0/0, args= 0, gp= 0 + .mask 0x00000000,0 + .fmask 0x00000000,0 + .set noreorder + .set nomacro + move $2,$0 + b $L8 + li $6,10 # 0xa + +$L9: + move $2,$5 +$L8: + addiu $4,$4,1 + lb $3,-1($4) + nop + bne $3,$6,$L9 + addiu $5,$2,1 + + j $31 + nop + + .set macro + .set reorder + .end Strlen + .size Strlen, .-Strlen + .align 2 + .globl pow16 + .set nomips16 + .set nomicromips + .ent pow16 + .type pow16, @function +pow16: + .frame $sp,0,$31 # vars= 0, regs= 0/0, args= 0, gp= 0 + .mask 0x00000000,0 + .fmask 0x00000000,0 + .set noreorder + .set nomacro + srl $5,$4,31 + addu $5,$5,$4 + sra $5,$5,1 + blez $5,$L14 + li $2,1 # 0x1 + + move $3,$0 +$L12: + addiu $3,$3,1 + bne $3,$5,$L12 + sll $2,$2,4 + + b $L17 + mult $2,$2 + +$L14: + mult $2,$2 +$L17: + andi $4,$4,0x1 + beq $4,$0,$L15 + nop + + mflo $2 + j $31 + sll $2,$2,4 + +$L15: + mflo $2 + j $31 + nop + + .set macro + .set reorder + .end pow16 + .size pow16, .-pow16 + .align 2 + .globl hex2int + .set nomips16 + .set nomicromips + .ent hex2int + .type hex2int, @function +hex2int: + .frame $sp,40,$31 # vars= 0, regs= 6/0, args= 16, gp= 0 + .mask 0x801f0000,-4 + .fmask 0x00000000,0 + .set noreorder + .set nomacro + addiu $sp,$sp,-40 + sw $31,36($sp) + sw $20,32($sp) + sw $19,28($sp) + sw $18,24($sp) + sw $17,20($sp) + sw $16,16($sp) + jal Strlen + move $16,$4 + + blez $2,$L24 + addiu $17,$2,-1 + + move $19,$0 + li $20,-1 # 0xffffffffffffffff +$L23: + lbu $2,0($16) + nop + addiu $3,$2,-48 + sll $3,$3,24 + sra $3,$3,24 + slt $4,$3,10 + beq $4,$0,$L20 + move $18,$16 + + b $L21 + sb $3,0($16) + +$L20: + addiu $2,$2,-55 + sb $2,0($16) +$L21: + lb $2,0($18) + nop + slt $3,$2,16 + bne $3,$0,$L22 + addiu $2,$2,-32 + + sb $2,0($18) +$L22: + jal pow16 + move $4,$17 + + lb $3,0($18) + nop + mult $3,$2 + mflo $2 + addu $19,$19,$2 + addiu $17,$17,-1 + bne $17,$20,$L23 + addiu $16,$16,1 + + b $L27 + move $2,$19 + +$L24: + move $19,$0 + move $2,$19 +$L27: + lw $31,36($sp) + lw $20,32($sp) + lw $19,28($sp) + lw $18,24($sp) + lw $17,20($sp) + lw $16,16($sp) + j $31 + addiu $sp,$sp,40 + + .set macro + .set reorder + .end hex2int + .size hex2int, .-hex2int + .align 2 + .globl int2hex + .set nomips16 + .set nomicromips + .ent int2hex + .type int2hex, @function +int2hex: + .frame $sp,32,$31 # vars= 0, regs= 3/0, args= 16, gp= 0 + .mask 0x80030000,-4 + .fmask 0x00000000,0 + .set noreorder + .set nomacro + addiu $sp,$sp,-32 + sw $31,28($sp) + sw $17,24($sp) + sw $16,20($sp) + move $17,$4 + move $16,$5 + jal pow16 + li $4,7 # 0x7 + + blez $2,$L29 + move $5,$0 + +$L34: + bne $2,$0,1f + div $0,$16,$2 + break 7 +1: + mflo $3 + beq $3,$0,$L30 + nop + + bne $2,$0,1f + div $0,$16,$2 + break 7 +1: + mfhi $16 + slt $4,$3,10 + beq $4,$0,$L31 + addu $4,$17,$5 + +$L35: + addu $4,$17,$5 + addiu $3,$3,48 + sb $3,0($4) + b $L32 + addiu $5,$5,1 + +$L31: + addiu $3,$3,87 + sb $3,0($4) + addiu $5,$5,1 +$L32: + bgez $2,$L33 + move $3,$2 + + addiu $3,$2,15 +$L33: + sra $2,$3,4 + bgtz $2,$L34 + nop + + b $L40 + addu $17,$17,$5 + +$L30: + bne $5,$0,$L35 + nop + + b $L32 + nop + +$L29: + addu $17,$17,$5 +$L40: + li $2,10 # 0xa + sb $2,0($17) + addiu $2,$5,-1 + lw $31,28($sp) + lw $17,24($sp) + lw $16,20($sp) + j $31 + addiu $sp,$sp,32 + + .set macro + .set reorder + .end int2hex + .size int2hex, .-int2hex + .align 2 + .globl main + .set nomips16 + .set nomicromips + .ent main + .type main, @function +main: + .frame $sp,64,$31 # vars= 16, regs= 8/0, args= 16, gp= 0 + .mask 0x807f0000,-4 + .fmask 0x00000000,0 + .set noreorder + .set nomacro + addiu $sp,$sp,-64 + sw $31,60($sp) + sw $22,56($sp) + sw $21,52($sp) + sw $20,48($sp) + sw $19,44($sp) + sw $18,40($sp) + sw $17,36($sp) + sw $16,32($sp) + li $2,1006632960 # 0x3c000000 + addiu $4,$2,224 + lui $3,%hi(uart) + sw $4,%lo(uart)($3) + li $3,17 # 0x11 + sw $3,224($2) + li $3,16 # 0x10 + lui $2,%hi(Ud+52) + sw $3,%lo(Ud+52)($2) + lui $21,%hi(buf) + addiu $21,$21,%lo(buf) + lui $22,%hi(buf+176) + addiu $22,$22,%lo(buf+176) + lui $18,%hi(Ud) + li $17,16 # 0x10 +$L45: + lw $5,0($21) + jal int2hex + addiu $4,$sp,16 + + li $19,-1 # 0xffffffffffffffff + addiu $20,$19,1 +$L53: + addiu $2,$sp,16 + addu $16,$2,$20 + addiu $2,$18,%lo(Ud) +$L52: + lw $2,48($2) + nop + beq $2,$17,$L51 + addiu $2,$sp,16 + + lb $4,0($16) + jal Putc + nop + + beq $2,$0,$L52 + addiu $2,$18,%lo(Ud) + + move $19,$20 + addiu $2,$sp,16 +$L51: + addu $2,$2,$19 + lb $2,0($2) + nop + bne $2,$0,$L53 + addiu $20,$19,1 + + addiu $21,$21,4 + bne $22,$21,$L45 + move $5,$0 + + jal startCounter + li $4,200 # 0xc8 + +$L46: + jal readCounter + nop + + b $L46 + nop + + .set macro + .set reorder + .end main + .size main, .-main + + .comm uart,4,4 + .globl buf + .data + .align 2 + .type buf, @object + .size buf, 180 +buf: + .word 1 + .word 1 + .word 2 + .word 3 + .word 5 + .word 8 + .word 13 + .word 21 + .word 34 + .word 55 + .word 89 + .word 144 + .word 233 + .word 377 + .word 610 + .word 987 + .word 1597 + .word 2584 + .word 4181 + .word 6765 + .word 10946 + .word 17711 + .word 28657 + .word 46368 + .word 75025 + .word 121393 + .word 196418 + .word 317811 + .word 514229 + .word 832040 + .word 1346269 + .word 2178309 + .word 3524578 + .word 5702887 + .word 9227465 + .word 14930352 + .word 24157817 + .word 39088169 + .word 63245986 + .word 102334155 + .word 165580141 + .word 267914296 + .word 433494437 + .word 701408733 + .space 4 + .ident "GCC: (GNU) 5.1.0" diff --git a/cMIPS/tests/prog.bin b/cMIPS/tests/prog.bin index bd31b673a85d5d5bc5702c072f8f6e55d600d816..33794068ce2915144852d3f29871b00bc0e4ef4e 100644 GIT binary patch literal 4144 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 literal 80 zcmZQzU|?`y;J0Dm7qDSuU{+ybU{TRv5L1z0NMR7tU|?Wjc(2O9@N_LBL$U$`1M4~l ThUdLM{vQ_u=|jf~3=B>Hs8R~t -- GitLab