コード例 #1
0
ファイル: vm_func.c プロジェクト: Albatroce/epita
void		read_in_mem(t_vm *vm)
{
  t_proc	*proc;

  for (proc = vm->proc; proc; proc = proc->next)
    if (proc->cur_work == READING)
    {
      if (!proc->rw->size || (proc->rw->cur_pos < proc->rw->size))
      {
	read_mem_value(vm, proc);
	inc_pc(proc->pc);
	proc->rw->cur_pos++;
      }
      if (!(proc->rw->cur_pos < 2) && !proc->rw->size)
      {
        proc->rw->size = get_inst_size(proc->rw->inst);
        proc->rw->delay = get_inst_delay(proc->rw->inst) + 1;
      }
      if (proc->rw->size && proc->rw->cur_pos >= proc->rw->size)
      {
        proc->cur_work = WAITING;
	if (vm->flags & TRACE)
	  trace_mode(vm, proc);
      }
    }
}
コード例 #2
0
ファイル: backtrace.c プロジェクト: ashang/xpenology-3.x
static bool read_instruction(u32 address, u32 * inst, unsigned int * inst_size)
{
	unsigned int size;

	if (inst == NULL)
		return false;

	*inst = 0;

	size = get_inst_size(address);

	if (inst_size != NULL)
	{
		*inst_size = size;
	}

	address = address & ~0x1;

	return read_data_from_addr(address, inst, size);
}