123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- // Aplica o back-end do juninho
- @target : mips
- // Especifica o tipo de metodo empregado para salvar o resultado da compilação
- @export : 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 = 5
- COL = 5
- )
- var (
- origin [LIN][COL]int
- result [LIN][COL]int
- )
- func preenche_matriz() {
- var (
- w = 1
- value int
- )
-
- 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 int
- //LM1,CM1 int
- )
- LM1 := LIN - 1
- CM1 := COL - 1
- for i:= 1; i < LM1; i++ {
- for j := 1; j < CM1; j++ {
- l = origin[i-1][j] + origin[i][j-1] + origin[i][j+1] + origin[i+1][j] - (4 * origin[i][j])
- if l > 255 { l = 255 }
- result[i][j] = l
- }
- }
- }
- func main() {
- preenche_matriz()
- laplaciano()
- }
|