program_jun_bit_count.go 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. // Aplica o back-end do juninho
  2. @target : mips
  3. // Especifica o tipo de metodo empregado para salvar o resultado da compilação
  4. @export : MultCoreJun
  5. // Diretorio onde o resultado da compilação será gravado
  6. @outputDirectory : `C:\Users\EUGENIO CARVALHO\Desktop\tmp\comp`
  7. // Quantidade de palavras de um bloco 32 palavras de 4bytes
  8. @cacheBlockSize: `32`
  9. /**
  10. Profile de compilacao do back-end
  11. O formato da string é um json que descreve um array de definições de cada core
  12. {
  13. "stackBaseAddress" : 5888, -> endereço da base da pilha do core em questão
  14. "initFunction": "multiplica(0)", -> define a main de cada core. aceita ate 4 parametros com valores de constantes
  15. "id": "core0" -> label que define o codigo de cada core
  16. },
  17. Se "stackBaseAddress" não for definido o compilador irá inferir o valor iniciando do ultimo endereço da memoria
  18. */
  19. @profile: `[
  20. {
  21. "id" : "core0",
  22. "initFunction" : "bitCount(0)",
  23. "filename" : "%s_core_0.txt"
  24. },
  25. {
  26. "id" : "core1",
  27. "initFunction" : "bitCount(18750)",
  28. "filename" : "%s_core_1.txt"
  29. },
  30. {
  31. "id" : "core2",
  32. "initFunction" : "bitCount(37500)",
  33. "filename" : "%s_core_2.txt"
  34. },
  35. {
  36. "id" : "core3",
  37. "initFunction" : "bitCount(56250)",
  38. "filename" : "%s_core_3.txt"
  39. }
  40. ]`
  41. package main;
  42. var result = 0
  43. func bitCount(x int) int {
  44. n := 0
  45. if x > 0 {
  46. for {
  47. n++
  48. if x = x & (x-1); x == 0 {
  49. break
  50. }
  51. }
  52. }
  53. result += n
  54. return n
  55. }
  56. /**
  57. func main(){
  58. var (
  59. n = 0
  60. seed = 10033
  61. )
  62. for i := 0; i < 10; i++ {
  63. //for i := 0; i < 2; i++ {
  64. n += bitCount(seed)
  65. //seed += 1
  66. seed += 2
  67. }
  68. return n
  69. }
  70. */