⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 opcodes.cpp

📁 在手机操作系统symbina上使用的一个脚本扩展语言的代码实现,可以参考用于自己的开发
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		// 190h
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		// 1A0h
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		// 1B0h
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		// 1C0h
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		// 1D0h
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		// 1E0h
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		// 1F0h
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode,	// filler
		&IllegalOpCode	// filler
		// No more allowed
		};

const OPCODEFUNC FuncOpCode::FuncOpCodeTable[] =
		{
		&Addr,
		&Asc,
		&IllegalFuncOpCode,
		&Count,
		&Day,
		&Dow,
		&Eof,
		&Err,
		&Exist,
		&Find,
		&Get,
		&Ioa,
		&Iow,
		&IoOpen,
		&IoWrite,
		&IoRead,
		// 10h
		&IoClose,
		&IoWait,
		&Hour,
		&Key,
		&Len,
		&Loc,
		&Minute,
		&Month,
		&PeekB,
		&PeekW,
		&Pos,
		&IllegalFuncOpCode, // was RecSize
		&Second,
		&IllegalFuncOpCode,
		&Year,
		&SAddr,
		// 20h
		&Week,
		&IoSeek,
		&Kmod,
		&KeyA,
		&KeyC,
		&IoOpenUnique,
		&gCreate,
		&gCreateBit,
		&gLoadBit,
		&gLoadFont,
		&gRank,
		&gIdentity,
		&gX,
		&gY,
		&gWidth,
		&gHeight,
		// 30h
		&gOriginX,
		&gOriginY,
		&gTWidth,
		&gPrintClip,
		&TestEvent,
		&IllegalFuncOpCode,
		&Menu,
		&Dialog,
		&Alert,
		&gCreateEnhanced,
		&MenuWithMemory,
		&IllegalFuncOpCode,
		&IllegalFuncOpCode,
		&IllegalFuncOpCode,
		&IllegalFuncOpCode,
		&IllegalFuncOpCode,
		// 40h
		&Days,
		&IAbs,
		&IntLong,
		&PeekL,
		&Space,
		&DateToSecs,
		&IllegalFuncOpCode,
		&IllegalFuncOpCode,
		&IllegalFuncOpCode,
		&IllegalFuncOpCode,
		&IllegalFuncOpCode,
		&Alloc,
		&ReAlloc,
		&AdjustAlloc,
		&LenAlloc,
		&Ioc,
		// 50h
		&Uadd,
		&Usub,
		&IoCancel,
		&IllegalFuncOpCode,
		&FindField,
		&Bookmark,
		&GetEventC,
		&InTrans,
		&mPopup,
		&IllegalFuncOpCode, // was going to be ModInt32
		&IllegalFuncOpCode,
		&IllegalFuncOpCode,
		&IllegalFuncOpCode,
		&IllegalFuncOpCode,
		&IllegalFuncOpCode,
		&IllegalFuncOpCode,
		// 60h
		&IllegalFuncOpCode,
		&IllegalFuncOpCode,
		&IllegalFuncOpCode,
		&IllegalFuncOpCode,
		&IllegalFuncOpCode,
		&IllegalFuncOpCode,
		&IllegalFuncOpCode,
		&IllegalFuncOpCode,
		&IllegalFuncOpCode,
		&IllegalFuncOpCode,
		&IllegalFuncOpCode,
		&IllegalFuncOpCode,
		&IllegalFuncOpCode,
		&IllegalFuncOpCode,
		&IllegalFuncOpCode,
		&IllegalFuncOpCode,
		// 70h
		&IllegalFuncOpCode,
		&IllegalFuncOpCode,
		&IllegalFuncOpCode,
		&IllegalFuncOpCode,
		&IllegalFuncOpCode,
		&IllegalFuncOpCode,
		&IllegalFuncOpCode,
		&IllegalFuncOpCode,
		&IllegalFuncOpCode,
		&IllegalFuncOpCode,
		&IllegalFuncOpCode,
		&IllegalFuncOpCode,
		&IllegalFuncOpCode,
		&IllegalFuncOpCode,
		&IllegalFuncOpCode,
		&IllegalFuncOpCode,
		// 80h
		&Abs,
		&ACos,
		&ASin,
		&ATan,
		&Cos,
		&Deg,
		&Exp,
		&Flt,
		&Intf,
		&Ln,
		&Log,
		&PeekF,
		&Pi,
		&Rad,
		&Rnd,
		&Sin,
		// 90h
		&Sqr,
		&Tan,
		&Val,
		&Max,
		&Mean,
		&Min,
		&Std,
		&Sum,
		&Var,
		&Eval,
		&IllegalFuncOpCode,
		&IllegalFuncOpCode,
		&IllegalFuncOpCode,
		&IllegalFuncOpCode,
		&IllegalFuncOpCode,
		&IllegalFuncOpCode,
		// a0h
		&IllegalFuncOpCode,
		&IllegalFuncOpCode,
		&IllegalFuncOpCode,
		&IllegalFuncOpCode,
		&IllegalFuncOpCode,
		&IllegalFuncOpCode,
		&IllegalFuncOpCode,
		&IllegalFuncOpCode,
		&IllegalFuncOpCode,
		&IllegalFuncOpCode,
		&IllegalFuncOpCode,
		&IllegalFuncOpCode,
		&IllegalFuncOpCode,
		&IllegalFuncOpCode,
		&IllegalFuncOpCode,
		&IllegalFuncOpCode,
		// b0h
		&IllegalFuncOpCode,
		&IllegalFuncOpCode,
		&IllegalFuncOpCode,
		&IllegalFuncOpCode,
		&IllegalFuncOpCode,
		&IllegalFuncOpCode,
		&IllegalFuncOpCode,
		&IllegalFuncOpCode,
		&IllegalFuncOpCode,
		&IllegalFuncOpCode,
		&IllegalFuncOpCode,
		&IllegalFuncOpCode,
		&IllegalFuncOpCode,
		&IllegalFuncOpCode,
		&IllegalFuncOpCode,
		&IllegalFuncOpCode,
		// c0h
		&ChrStr,
		&DatimStr,
		&DayNameStr,
		&DirStr,
		&ErrStr,
		&FixStr,
		&GenStr,
		&GetStr,
		&HexStr,
		&KeyStr,
		&LeftStr,
		&LowerStr,
		&MidStr,
		&MonthStr,
		&NumStr,
		&PeekStr,
		// d0h
		&ReptStr,
		&RightStr,
		&SciStr,
		&UpperStr,
		&IllegalFuncOpCode,
		&WCmd,
		&CmdStr,
		&ParseStr,
		&ErrxStr,
		&GetDocStr,
		&Size,
		&IllegalFuncOpCode,
		&IllegalFuncOpCode,
		&IllegalFuncOpCode,
		&IllegalFuncOpCode,
		&IllegalFuncOpCode,
		};

	
void OpCode::CallFunction(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr)
	{
	TUint funcCode=aRuntime.IP8();
	FuncOpCode::FuncOpCodeTable[funcCode](aStack,aRuntime,aFramePtr);
	}


void OpCode::IllegalOpCode(CStack&, COplRuntime&, CFrame*)
	{
	User::Leave(KOplErrIllegal);
	}

void FuncOpCode::IllegalFuncOpCode(CStack&, COplRuntime&, CFrame* )
	{
	// Worth keeping this separate from IllegalOpcode() for debugging?
	User::Leave(KOplErrIllegal);
	}

#if defined(INTERNAL_RELEASE)
void OpCode::__Dummy(CStack& aStack, COplRuntime& aRuntime, CFrame*)
// Called by DiamPos i% in internal releases
	{
	TInt16 val=aStack.PopInt16();
#ifdef _HISTORY
	if (val==KSwitchHistoryOn)
		{
		aRuntime.SetStateFlags(KHistoryEnabled);
		return;
		}
	else if (val==KSwitchHistoryOff)
		{
		aRuntime.ClearStateFlags(KHistoryEnabled);
		return;
		}
#endif
	TBuf<16> buf;
	_LIT(KDummy,"__Dummy: %d");
	buf.Format(KDummy,val);
	((CEikonEnv*)aRuntime.ConEnv())->AlertWin(buf);
	}
#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -