NewtBC.h

バイトコードの生成 [詳細]

#include "NewtType.h"
#include "NewtParser.h"

ソースコードを見る。

マクロ定義

#define kNBCFieldMask   0x07
 バイトコードフィールドのマスク
#define kNBCInstructionsLen   26
 命令セットテーブルの長さ
#define kNBCSimpleInstructionsLen   8
 シンプル命令セットテーブルの長さ
#define kBCFuncsLen   25
 関数テーブルの長さ

列挙型

enum  {
  kNBCPop = 000, kNBCDup = 001, kNBCReturn = 002, kNBCPushSelf = 003,
  kNBCSetLexScope = 004, kNBCIterNext = 005, kNBCIterDone = 006, kNBCPopHandlers = 007
}
enum  {
  kNBCPush = 0030, kNBCPushConstant = 0040, kNBCCall = 0050, kNBCInvoke = 0060,
  kNBCSend = 0070, kNBCSendIfDefined = 0100, kNBCResend = 0110, kNBCResendIfDefined = 0120,
  kNBCBranch = 0130, kNBCBranchIfTrue = 0140, kNBCBranchIfFalse = 0150, kNBCFindVar = 0160,
  kNBCGetVar = 0170, kNBCMakeFrame = 0200, kNBCMakeArray = 0210, kNBCGetPath = 0220,
  kNBCSetPath = 0230, kNBCSetVar = 0240, kNBCFindAndSetVar = 0250, kNBCIncrVar = 0260,
  kNBCBranchIfLoopNotDone = 0270, kNBCFreqFunc = 0300, kNBCNewHandlers = 0310
}
enum  {
  kNBCAdd = 0, kNBCSubtract = 1, kNBCAref = 2, kNBCSetAref = 3,
  kNBCEquals = 4, kNBCNot = 5, kNBCNotEqual = 6, kNBCMultiply = 7,
  kNBCDivide = 8, kNBCDiv = 9, kNBCLessThan = 10, kNBCGreaterThan = 11,
  kNBCGreaterOrEqual = 12, kNBCLessOrEqual = 13, kNBCBitAnd = 14, kNBCBitOr = 15,
  kNBCBitNot = 16, kNBCNewIterator = 17, kNBCLength = 18, kNBCClone = 19,
  kNBCSetClass = 20, kNBCAddArraySlot = 21, kNBCStringer = 22, kNBCHasPath = 23,
  kNBCClassOf = 24
}

関数

newtRef NBCGenBC (nps_syntax_node_t *stree, uint32_t size, bool ret)
newtRef NBCCompileFile (char *s, bool ret)
newtRef NBCCompileStr (char *s, bool ret)
void NBError (int32_t err)


説明

バイトコードの生成

作者:
M.Nukui
日付:
2003-11-07
Copyright (C) 2003-2004 M.Nukui All rights reserved.

NewtBC.h で定義されています。


関数

newtRef NBCCompileFile ( char *  s,
bool  ret 
)

ソースファイルをコンパイル

引数:
s [in] ソースファイルのパス
ret [in] 戻り値の有無
戻り値:
関数オブジェクト

NewtBC.c2606 行で定義されています。

参照先 kNewtRefUnbindNBCGenBC()NPSCleanup()NPSParseFile().

参照元 NsCompileFile().

関数の呼び出しグラフ:

newtRef NBCCompileStr ( char *  s,
bool  ret 
)

文字列をコンパイル

引数:
s [in] スクリプト文字列
ret [in] 戻り値の有無
戻り値:
関数オブジェクト

NewtBC.c2634 行で定義されています。

参照先 kNewtRefNILkNewtRefUnbindNBCGenBC()NewtThrow()NPSCleanup()NPSParseStr().

参照元 NsCompile().

関数の呼び出しグラフ:

newtRef NBCGenBC ( nps_syntax_node_t stree,
uint32_t  size,
bool  ret 
)

バイトコードの生成

引数:
stree [in] 構文木
size [in] 構文木の長さ
ret [in] 戻り値の有無
戻り値:
関数オブジェクト

NewtBC.c2569 行で定義されています。

参照先 NBCCleanup()NBCEnvNew()NBCFnDone()NBCGenBC_sub()NBCInit()newt_bc_envNEWT_DUMPBCNewtFprintf()NewtPackLiteral()NewtRefIsNotNILNVMDumpFn().

参照元 NBCCompileFile()NBCCompileStr()NVMInterpret2().

関数の呼び出しグラフ:

void NBError ( int32_t  err  ) 

エラーメッセージの表示

引数:
err [in] エラーコード
戻り値:
なし

NewtBC.c2667 行で定義されています。

参照先 kNErrAssignToConstantkNErrSyntaxErrorkNErrWrongNumberOfArgsNewtFprintf().

参照元 NBCGenAsign()NBCGenCallFn()NBCGenConstant()NBCGenExists()NBCGenGlobalVar()NBCGenLocalVar()NBCMakeFnArgFrame()NBCTypeValid().

関数の呼び出しグラフ:


NEWT/0に対してThu Nov 23 16:55:19 2006に生成されました。  doxygen 1.5.0