Exemple #1
0
void WhileObject::initialise( shared_ptr<X86Reference> v, bool write ) {
	ref = v;
	type = make_shared<X86ConstRef>(getTypeTag(w_type));

	if ( write ) {
		writeMem();
	}
}
Exemple #2
0
void WhileObject::assignType( shared_ptr<lang::Type> t, bool write ) {
	if (t->nameStr() == "real") {
		shared_ptr<X86Register> r = program->getFreeMmxRegister();
		r->assign_itof( valueDirect() );
		ref = r->ref();
	}

	w_type = t;
	type = make_shared<X86ConstRef>(getTypeTag(t));

	if ( write ) {
		writeMem();
	}
}
Exemple #3
0
sExpression *lookupVariable(sSymbol *symbol, sEnvironment *env){
  int i = 0;
  int keySize = strlen(symbol->name) * sizeof(char);
  TCXSTR *str = getTypeTag(symbol->name);

  void *result = tcmapget(env->varmap, symbol->name, keySize, &i);
  if(i == 0){
    //fail find
    if(isNoParent(env)){

      return &sNull;
    }else{
      return lookupVariable(symbol, env->parent);
    }
  }else{
    //success find
    sType *type = (sType *)tcmapget(env->varmap, tcxstrptr(str), tcxstrsize(str), &i);
    sExpression *resultExp = newExp(result, *type);
    return resultExp;
  }
}
Exemple #4
0
static void putVars(sList *parameterNames, sList *arguments, TCMAP *mapdb){
  sExpression *firstP = car(parameterNames);
  sExpression *firstA = car(arguments);
  char *pName;
  void *aPointer;
  void *pPointer;
  int aSize;
  int pSize;

  if(isNull(firstP)){
    return;
  }

  if(isSymbol(firstP)){
    pName = toSymb(firstP)->name;
  }else{
    return;
  }

  pPointer = pName;
  pSize = strlen(pName) * sizeof(char);
  aPointer = firstA->value;
  aSize = firstA->valueSize;

  TCXSTR *str = getTypeTag(pName);
  tcmapput(mapdb, pPointer, pSize, aPointer, aSize);
  tcmapput(mapdb, (char *)tcxstrptr(str), tcxstrsize(str), &(firstA->type), sizeof(sType));

  sExpression *remainP = cdr(parameterNames);
  sExpression *remainA = cdr(arguments);
  if(isList(remainP) && isList(remainA)){
    return putVars(toList(remainP), toList(remainA), mapdb);
  }else if(isSymbol(remainP)){
    sList *lastOneParameter = toList(cons(remainP, &sNull));
    sList *lastOneArgument  = toList(cons(remainA, &sNull));
    return putVars(lastOneParameter, lastOneArgument, mapdb);
  }
  return;
}
Exemple #5
0
shared_ptr<X86Reference> WhileObject::tagRef() {
	if (space.ref) return space.ref;
	else return make_shared<X86ConstRef>(getTypeTag(w_type));
}