IVANNOSYS.java 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. package compiler;
  2. /*
  3. Verificar operacao unaria negacao valor em laco
  4. * To change this license header, choose License Headers in Project Properties.
  5. * To change this template file, choose Tools | Templates
  6. * and open the template in the editor.
  7. */
  8. import API.Api;
  9. import API.BuildParams;
  10. import API.CodeProcessor;
  11. import API.Target;
  12. import Export.MultCoreJun;
  13. import Export.Simulation;
  14. import IntermediaryCode.IRGenerator;
  15. import java.util.logging.Level;
  16. import java.util.logging.Logger;
  17. import targets.mips.Gen;
  18. /**
  19. *
  20. * @author Eugenio
  21. */
  22. public class IVANNOSYS {
  23. protected static IvannosysCompiler COM;
  24. /**
  25. * @param args the command line arguments
  26. */
  27. public static void main(String[] args) throws Exception {
  28. try {
  29. String cmd = "", file = "";
  30. if (args.length
  31. > 0) {
  32. cmd = args[0];
  33. }
  34. switch (cmd) {
  35. case "create":
  36. break;
  37. default:
  38. COM = new IvannosysCompiler(
  39. "UTF-8",
  40. IvannosysCompiler.INPUT_FILE)
  41. .include(".\\src\\samples")
  42. .include(".\\src\\libs")
  43. // Especifica a classe de geração de codigo de tres enderecos
  44. .IRGenerator(new IRGenerator());
  45. // Extensao dos arquivos
  46. // .setExtensionLibrary(".go");
  47. // Inicializa a api do compilador
  48. Api.Init(COM);
  49. // Parametros de compilação
  50. BuildParams.Add("display.ERROS", "true");
  51. BuildParams.Add("display.IR", "true");
  52. BuildParams.Add("display.AST", "true");
  53. BuildParams.Add("mode", "developement");
  54. // Especifica a classe de geração de código alvo mips
  55. Gen Mips = new targets.mips.Gen();
  56. // Adiciona dois metodos de exportação ao alvo mips
  57. // Metodo de simualcao
  58. Mips.AddExportOption("simulation", new Simulation(new tools.mips.MipsSettings() {
  59. {
  60. // Não executar passo a passo
  61. Set("stepByStep", "false");
  62. // Necessario para poder usar os breakpoints
  63. Set("mode", "debug");
  64. // Determina os pontos de para no codigo alvo
  65. Set("breakpoints", "94");
  66. // Caminho do arquivo de memoria de instrucoes
  67. Set("memory.instruction", "\\src\\tools\\mips\\memory\\mi.memory");
  68. // Tamanho da memorua de instrucoes
  69. Set("memory.instruction.size", 16 * 1024);
  70. // Caminho do arquivo de memoria de dados
  71. Set("memory.data", "\\src\\tools\\mips\\memory\\md.memory");
  72. // Tamanho da memorua de dados
  73. Set("memory.data.size", 16 * 1024);
  74. }
  75. }));
  76. // Metodo exporta profile para arquitetura de juninho
  77. Mips.AddExportOption("MultCoreJun", new MultCoreJun());
  78. Target.Add("mips", Mips);
  79. // Registra os processadores para o alvo mips
  80. // Executa alocacao de registradores antes de traduzir cada bloco
  81. CodeProcessor.On("mips", "BeforeTranslateBlock", "mips.register.alloc");
  82. CodeProcessor.On("mips", "AfterTranslateBlock", "mips.o.L1,mips.copy.dep");
  83. // Atualiza os enderecos
  84. CodeProcessor.On("mips", "AfterTranslate", "mips.update.address");
  85. // file = "src\\samples\\program.go";
  86. // file = "src\\samples\\program.go";
  87. // file = "src\\samples\\program_mult_jon.go";
  88. // file = "src\\samples\\program_mult.go";
  89. file = "src\\samples\\program_jun_bit_count.go";
  90. // file = "src\\samples\\program_jun_mult_manycore.go";
  91. // Compila o arquivo de entrada
  92. COM.Compile(file);
  93. }
  94. } catch (Exception ex) {
  95. Logger.getLogger(IVANNOSYS.class.getName()).log(Level.SEVERE, null, ex);
  96. }
  97. }
  98. }