// Aplica o back-end do juninho @target : mipsjun // Diretorio onde o resultado da compilação será gravado @outputDirectory : `C:\Users\EUGENIO CARVALHO\Desktop\tmp\comp` // Quantidade de palavras de um bloco 32 palavras de 4bytes @cacheBlockSize: `32` /** Profile de compilacao do back-end O formato da string é um json que descreve um array de definições de cada core { "stackBaseAddress" : 5888, -> endereço da base da pilha do core em questão "initFunction": "multiplica(0)", -> define a main de cada core. aceita ate 4 parametros com valores de constantes "id": "core0" -> label que define o codigo de cada core }, Se "stackBaseAddress" não for definido o compilador irá inferir o valor iniciando do ultimo endereço da memoria */ @profile: `[ { "id" : "core0", "initFunction" : "multiplica(0)", "filename" : "%s_core_0.txt" }, { "id" : "core1", "initFunction" : "multiplica(5)", "filename" : "%s_core_1.txt" }, { "id" : "core2", "initFunction" : "multiplica(10)", "filename" : "%s_core_2.txt" }, { "id" : "core3", "initFunction" : "multiplica(15)", "filename" : "%s_core_3.txt" } ]` package main; const ( LIN = 20 COL = 20 NUM_LINHAS_MULT = 5 ) var ( matrizA [LIN][COL]int matrizB [LIN][COL]int matrizR [LIN][COL]int ) func multiplica(initial int) { aux := 0 limit := initial + NUM_LINHAS_MULT for i := initial; i < limit; i++ { for j := 0; j < COL; j++ { for k := 0; k < LIN; k++ { aux = aux + (matrizA[i][k] * matrizB[k][j]) } matrizR[i][j] = aux aux = 0 } } }