Skip to content

方舟IR节点类词典

Xuan Wu edited this page Sep 10, 2019 · 10 revisions

术语表(出现多次的用词)

英文 中文 参考
前缀 D- = 直接 direct
I- 间接 indirect
opcode 操作符
goto 跳转
label 标记
addof 取址
call 调用
bit 比特
const 常量
FP 帧址 frame pointer
intrinsic ?? indicates an intrinsic function that has no side effect whose return value depends only on the arguments (a pure function)
Nary ??

操作符的对应节点类

英文 中文 对应操作(空则与英文命名去掉Node相同)
存储存取声明(Notmmpl?)
DassignNode 直接赋值节点类 dassign, maydassign
IassignNode 间接赋值节点类
hierarchical控制流操作符
BlockNode 块节点类
DoloopNode 循环节点类
WhileStmtNode While声明节点类 dowhile, while
IfStmtNode If声明节点类 if
SwitchNode Switch节点类
MultiwayNode 多路节点类
ForeachelemNode 遍历元素节点类
其他操作符
CommentNode 注释节点类
UnaryStmtNode 一元声明节点类 eval, free, assertnonnull
BinaryStmtNode 二元声明节点类 assertge, assertlt
表达式(Notmmpl?)
存储存取操作符
AddrofNode 取址节点类 dread, addrof
IreadNode 间接读取节点类 iread, iaddrof
SizeoftypeNode 类型大小节点类
FieldsDistNode 文档缺失
N元表达式操作符
ArrayNode 数组节点类
声明
存储存取操作符
IassignoffNode 带偏移间接赋值节点类
IassignFPoffNode 帧址带偏移间接赋值节点类
RegassignNode 寄存器赋值节点类
扁平控制流操作符
GotoNode 跳转节点类
CondGotoNode 条件跳转节点类 brfalse, brtrue
NaryStmtNode ?? return
RangegotoNode 范围跳转节点类 "range" -- "There must be no gap in the constant integer values specified, and a match is guaranteed within the range of specified constant integer values"
调用操作符
CallNode 调用节点类 call, virtualcall, superclasscall, interfacecall, customcall, polymorphiccall, interfaceicall, virtualicall, callassigned, virtualcallassigned, superclasscallassigned, interfacecallassigned, customcallassigned, polymorphiccallassigned, interfaceicallassigned, virtualicallassigned
ICallNode 间接调用节点类 icall, icallassigned
IntrinsiccallNode ?? intrinsiccall, intrinsiccallwithtype, xintrinsiccall,intrinsiccallassigned, intrinsiccallwithtypeassigned, xintrinsiccallassigned
带普适实例化调用操作符
CallinstantNode 实例化调用节点类 callinstant, callinstantassigned, virtualcallinstant, virtualcallinstantassigned, superclasscallinstant, superclasscallinstantassigned, interfacecallinstant, interfacecallinstantassigned
异常处理
JsTryNode 文档缺失
TryNode Try节点类
UnaryStmtNode 一元声明节点类 throw
BaseNode 基础节点类 jscatch
CatchNode Catch节点类
StmtNode 声明节点类(编译有误 "undefined reference to", 暂不重命名) finally, cleanuptry, endtry, retsub
GotoNode 跳转节点类 gosub
同步
NaryStmtNode ?? syncenter, syncexit
UnaryStmtNode 一元声明节点类 decref, incref, decrefreset
路障(?barriers)
StmtNode [见上] membaracquire, membarrelease, membarstoreload, membarstorestore
其他操作符
LabelNode 标记节点类
表达式
存储存取指令
IreadoffNode 带偏移间接读取节点类
IreadFPoffNode 帧址带偏移间接读取节点类
RegreadNode 寄存器读取节点类
叶(?leaf)操作符
AddroffuncNode 函数取址节点类
AddroflabelNode 标记取址节点类
ConstvalNode 常量值节点类
ConststrNode 常量字符串节点类
Conststr16Node 常量16字符串节点类
类型转换相关
RetypeNode 类型重置节点类 retype
TypeCvtNode 类型转换节点类 ceil, cvt, floor, round, trunc
一元表达操作
UnaryNode 一元节点类 abs, bnot, lnot, neg, recip, sqrt, alloca, malloc
ExtractbitsNode 比特提取节点类 sext, zext
GCMallocNode 自动回收内存分配节点类 gcmalloc, gcpermalloc
JarrayMallocNode Java数组内存分配节点类 gcmallocjarray, gcpermallocjarray
ResolveFuncNode 文档缺失 resolveinterfacefunc, resolvevirtualfunc
二元表达操作
BinaryNode 二元节点类 add, sub, mul, div, rem, asr, lshr, shl, max, min, band, bior, bxor, CG_array_elem_add, land, lior, cand, cior
CompareNode 比较节点类 eq, ge, gt, le, lt, ne, cmp, cmpl, cmpg
三元表达操作
TernaryNode 三元节点类 select
N元表达式操作符
IntrinsicopNode ?? intrinsicop, intrinsicopwithtype
其他表达式操作符
ExtractbitsNode 比特提取节点类
DepositbitsNode 比特放置节点类
不在opcodes.def中的其他节点类
DreadNode 直接读取节点类, 等价于AddrofNode