Example #1
0
void Vm::execMain(const SCodeObject &c, int argc, char *args[]) {
  auto fnob = c->getValue("main:");
  assert(fnob != nullptr && "We need a main function!");
  // make a list out of the char array
  // push the args into the vm stack
  auto arglist = ListModule::fromStringArray(argc, args);
  VM_PUSH(arglist);
  auto fn = std::dynamic_pointer_cast<FunctionObject>(fnob);
  SCodeObject cc = fn->getCodeObject();
  execCode(cc);
}
Example #2
0
int UsbBootTarget(int resetpc,int bootflag,int vector)
{
	execCode(resetpc);
	return 1;

#if	0
	cmdBuf cmd;
//	int   *cmdvect= (int*) &cmd.data;

	memset(&cmd,0,sizeof(cmdBuf));
	cmd.cmd   = HIDASP_JMP;
	cmd.adr   = resetpc;		// 実行開始番地.
	cmd.size  = bootflag;		// 1ならUSBバスをリセットする.
//	*cmdvect  = vector;			// FM3のみで必要: 仮想vector tableのアドレス.

	if(	bootflag ) {			// 別のファームを起動させた場合は、戻ってこない.
		reboot_done = 1;
	}

	if( QueryAVR(&cmd) == 0) return 0;	//失敗.

	return 1;
#endif
}