123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- package compiler;
- /*
- Verificar operacao unaria negacao valor em laco
- * To change this license header, choose License Headers in Project Properties.
- * To change this template file, choose Tools | Templates
- * and open the template in the editor.
- */
- import API.Api;
- import API.BuildParams;
- import API.CodeProcessor;
- import API.Target;
- import Export.MultCoreJun;
- import Export.Simulation;
- import IntermediaryCode.IRGenerator;
- import java.util.logging.Level;
- import java.util.logging.Logger;
- import targets.mips.Gen;
- /**
- *
- * @author Eugenio
- */
- public class IVANNOSYS {
- protected static IvannosysCompiler COM;
- /**
- * @param args the command line arguments
- */
- public static void main(String[] args) throws Exception {
- try {
- String cmd = "", file = "";
- if (args.length
- > 0) {
- cmd = args[0];
- }
- switch (cmd) {
- case "create":
- break;
- default:
- COM = new IvannosysCompiler(
- "UTF-8",
- IvannosysCompiler.INPUT_FILE)
- .include(".\\src\\samples")
- .include(".\\src\\libs")
- // Especifica a classe de geração de codigo de tres enderecos
- .IRGenerator(new IRGenerator());
- // Extensao dos arquivos
- // .setExtensionLibrary(".go");
- // Inicializa a api do compilador
- Api.Init(COM);
- // Parametros de compilação
- BuildParams.Add("display.ERROS", "true");
- BuildParams.Add("display.IR", "true");
- BuildParams.Add("display.AST", "true");
- BuildParams.Add("mode", "developement");
- // Especifica a classe de geração de código alvo mips
- Gen Mips = new targets.mips.Gen();
- // Adiciona dois metodos de exportação ao alvo mips
- // Metodo de simualcao
- Mips.AddExportOption("simulation", new Simulation(new tools.mips.MipsSettings() {
- {
- // Não executar passo a passo
- Set("stepByStep", "false");
- // Necessario para poder usar os breakpoints
- Set("mode", "debug");
- // Determina os pontos de para no codigo alvo
- Set("breakpoints", "94");
- // Caminho do arquivo de memoria de instrucoes
- Set("memory.instruction", "\\src\\tools\\mips\\memory\\mi.memory");
- // Tamanho da memorua de instrucoes
- Set("memory.instruction.size", 16 * 1024);
- // Caminho do arquivo de memoria de dados
- Set("memory.data", "\\src\\tools\\mips\\memory\\md.memory");
- // Tamanho da memorua de dados
- Set("memory.data.size", 16 * 1024);
- }
- }));
- // Metodo exporta profile para arquitetura de juninho
- Mips.AddExportOption("MultCoreJun", new MultCoreJun());
- Target.Add("mips", Mips);
- // Registra os processadores para o alvo mips
- // Executa alocacao de registradores antes de traduzir cada bloco
- CodeProcessor.On("mips", "BeforeTranslateBlock", "mips.register.alloc");
- CodeProcessor.On("mips", "AfterTranslateBlock", "mips.o.L1,mips.copy.dep");
- // Atualiza os enderecos
- CodeProcessor.On("mips", "AfterTranslate", "mips.update.address");
- // file = "src\\samples\\program.go";
- // file = "src\\samples\\program.go";
- // file = "src\\samples\\program_mult_jon.go";
- // file = "src\\samples\\program_mult.go";
- file = "src\\samples\\program_jun_bit_count.go";
- // file = "src\\samples\\program_jun_mult_manycore.go";
- // Compila o arquivo de entrada
- COM.Compile(file);
- }
- } catch (Exception ex) {
- Logger.getLogger(IVANNOSYS.class.getName()).log(Level.SEVERE, null, ex);
- }
- }
- }
|