public AssemblerResult Assemble(Instruction[] program) { MemoryWord[] data = new MemoryWord[program.Length]; List <string> errors = new List <string>(); List <string> warnings = new List <string>(); for (int address = 0; address < program.Length; address++) { Instruction currentInstruction = program[address]; data[address] = new MemoryWord((byte)currentInstruction.OpCode, currentInstruction.Operand); } return(new AssemblerResult(data, errors, warnings)); }
private void OnCommand_Program() { if (device.IsConnected) { isBusy = true; ClearLog(); WriteLog("Iniciando programação da memória SRAM"); WriteLog(string.Format("Tamanho total: {0} palavras", FpgaBoard.MEMORY_LENGTH)); Task.Factory.StartNew(() => { // write each memory address to the board WriteLog("Espaço de programa:"); for (int address = 0; address < program.Length; address++) { MemoryWord word = program[address]; device.WaitQuery(new Device.SerialCommands.TxWriteMemory((byte)address, word.MSB, word.LSB)); WriteLog(string.Format("Gravando {0} no endereço {1:X2}", word, address)); // report progress } }).ContinueWith((t) => { WriteLog("Finalizado."); isBusy = false; }); } }