// Aplica o back-end do juninho @target : mipsjun // Especifica o tipo de metodo empregado para salvar o resultado da compilação @export : simulation //MultCoreJun // Diretorio onde o resultado da compilação será gravado @outputDirectory : `C:\Users\EUGENIO CARVALHO\Desktop\tmp\laplaciano` // 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 = 4 COL = 4 ) var ( origin [LIN][COL]int32 result [LIN][COL]int32 ) func preenche_matriz() { var ( w = 1 value, LM1, CM1 int32 ) LM1 = LIN - 1 CM1 = COL - 1 for i := 0; i < LIN; i++ { for j := 0; j < COL; j++ { switch { case i == 0, i == LM1: // Primeira e ultima linha value = 0 case j == 0, j == CM1: // Primeira e ultima coluna value = 0 default: // Elementos do interior da matriz value = w w++ } origin[i][j] = value } } } func laplaciano() { var ( l int32 ) LM1 := LIN - 1 CM1 := COL - 1 for i:= 1; i < LM1; i++ { for j := 1; j < CM1; j++ { l = origin[i-1][j] l += origin[i][j-1] l += origin[i][j+1] l += origin[i+1][j] l -= (4 * origin[i][j]) if l > 255 { l = 255 } else if l < 0 { l = 0 } result[i][j] = l } } } func main() { preenche_matriz() laplaciano() }