// 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` // 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; import "sync" type x struct { a int32 } var ( result = 0 bolena bool //mut sync.Mutex x1 x ) func bitCount(x int32) int { n := 0 if x > 0 { for true { n++ if x = x & (x-1); x == 0 { break } } } //mut.Lock() result += n //mut.Unlock() return n } func main(){ var ( n = 0 seed = 10033 ) bolena = true for i := 0; i < 10; i++ { //for i := 0; i < 2; i++ { n += bitCount(seed) //seed += 1 seed += 2 } return n }