Skip to content

07.TheExecutionProcess

nonodev96 edited this page Jul 2, 2022 · 3 revisions

El proceso de simulación

Hemos llamado proceso de simulación a los pasos necesarios para preparar una simulación.

  1. Configurar la máquina (aunque tiene una configuración por defecto recomendamos modificarla a nuestro gusto)
  2. Desde el gestor de ficheros crear nuestro fichero de prueba.
  3. Abrir o crear el fichero a simular.
  • Una vez en el editor será este el fichero que enviemos al servidor a simular.
  1. Sincronizar con el servidor o reiniciar simulación.
  • Limpia la memoria local de la simulación y pide al servidor que intérprete el fichero de nuevo.
  1. Simular (dos formas):
  • Simular paso por paso.
  • Simular por reloj.
  1. Ir a una sección de visualización
  • Multiview
    • Pipeline
    • Cycle Clock Diagram
    • Registers
    • Memory
    • Code
    • Statistics

Desarrollo

Para iniciar el proceso se debe sincronizar el código de nuestro editor, para ello usamos el mensaje TypeSimulationInitRequest en formato JSON para iniciar una simulación, el servidor responderá con el objeto JSON que corresponde al formato de mensaje TypeSimulationInitResponse, por último el servidor nos irá respondiendo paso a paso con el mensaje TypeSimulationStep en formato JSON.

export type TypeSimulationInitRequest = {
  id:           string;
  filename:     string;
  date:         string;
  content:      string;
  breakpoints:  TypeLine[];
  registers:    TypeRegisterToUpdate[];
  memory:       TypeMemoryToUpdate[];
};

export type TypeSimulationInitResponse = {
  filename:             string;
  id:                   string;
  date:                 string;
  lines:                number;
  canSimulate:          boolean;
  errors:               TypeErrorInCode[];
  machineDirectives:    TypeDirectiveData[];
  machineInstructions:  TypeInstructionsData[];
  runner:               TypeSimulationStep[];
};

export type TypeSimulationStep = {
  isComplete?:      boolean;
  isBreakpoint?:    boolean;
  step:             number;
  line:             number;
  isNewInstruction: boolean;
  pipeline:         TypePipeline;
  registers:        TypeRegisterToUpdate[];
  memory:           TypeMemoryToUpdate[];
  statistics:       Partial<TypeDataStatistics>;
};

Control de la simulación

Reiniciar socket

Sincronizar con el servidor

Simular por reloj

Simular por pasos

Clone this wiki locally