// Aplica o back-end do juninho @target : mips // Especifica o tipo de metodo empregado para salvar o resultado da compilação //@export : MultCoreJun @export : simulation // Diretorio onde o resultado da compilação será gravado @outputDirectory : `C:\Users\EUGENIO CARVALHO\Desktop\tmp\bitCount_1` // 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" : "bitCount(0)", "filename" : "%s_core_0.txt" }, { "id" : "core1", "initFunction" : "bitCount(18750)", "filename" : "%s_core_1.txt" }, { "id" : "core2", "initFunction" : "bitCount(37500)", "filename" : "%s_core_2.txt" }, { "id" : "core3", "initFunction" : "bitCount(56250)", "filename" : "%s_core_3.txt" } ]` package main; var ( result [4][32]int32 ) func bitCount(init int32, core int32){ var ( n int32 x int32 tmp = 0 zero = 0 seed = 112500 //seed = 1000 ) for i:= init; i < init + 4500; i++ { n = 0 x = seed if x > 0 { for true { n++ if x = x & (x-1); x == 0 { break } } tmp += n } seed +=13 } result[core][zero] = tmp } func main(){ bitCount(18750,1) }