2 Star 1 Fork 1.4K

中文编程 / OpenArkCompiler

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
opcodes.def 12.41 KB
一键复制 编辑 原始数据 按行查看 历史
/*
* Copyright (c) [2019] Huawei Technologies Co.,Ltd.All rights reserved.
*
* OpenArkCompiler is licensed under the Mulan PSL v1.
* You can use this software according to the terms and conditions of the Mulan PSL v1.
* You may obtain a copy of Mulan PSL v1 at:
*
* http://license.coscl.org.cn/MulanPSL
*
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR
* FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v1 for more details.
*/
// Stmt & Notmmpl
// storage access opcodes
OPCODE(dassign, 直接赋值节点类, (OPCODEISSTMT | OPCODENOTMMPL | OPCODEHASSSADEF), 8)
OPCODE(maydassign, 直接赋值节点类, (OPCODEISSTMT | OPCODENOTMMPL | OPCODEHASSSADEF), 8)
OPCODE(iassign, 间接赋值节点类, (OPCODEISSTMT | OPCODENOTMMPL | OPCODEHASSSADEF), 12)
// hierarchical control flow opcodes
OPCODE(block, 块节点类, (OPCODEISSTMT | OPCODENOTMMPL), 0)
OPCODE(doloop, 循环节点类, (OPCODEISSTMT | OPCODENOTMMPL), 0)
OPCODE(dowhile, While声明节点类, (OPCODEISSTMT | OPCODENOTMMPL), 0)
OPCODE(if, If声明节点类, (OPCODEISSTMT | OPCODENOTMMPL), 0)
OPCODE(while, While声明节点类, (OPCODEISSTMT | OPCODENOTMMPL), 0)
OPCODE(switch, Switch节点类, (OPCODEISSTMT | OPCODENOTMMPL), 8)
OPCODE(multiway, 多路节点类, (OPCODEISSTMT | OPCODENOTMMPL), 8)
OPCODE(foreachelem, 遍历元素节点类, (OPCODEISSTMT | OPCODENOTMMPL), 0)
// other opcodes
OPCODE(comment, 注释节点类, (OPCODEISSTMT | OPCODENOTMMPL), 0)
OPCODE(eval, 一元声明节点类, (OPCODEISSTMT | OPCODENOTMMPL), 8)
OPCODE(free, 一元声明节点类, (OPCODEISSTMT | OPCODENOTMMPL), 8)
OPCODE(assertge, 二元声明节点类, (OPCODEISSTMT | OPCODENOTMMPL), 8)
OPCODE(assertlt, 二元声明节点类, (OPCODEISSTMT | OPCODENOTMMPL), 8)
OPCODE(assertnonnull, 一元声明节点类, (OPCODEISSTMT | OPCODENOTMMPL), 8)
// Expr & Notmmpl
// storage access opcodes
OPCODE(dread, 取址节点类, (OPCODENOTMMPL | OPCODEHASSSAUSE), 12)
OPCODE(iread, 间接读取节点类, (OPCODENOTMMPL | OPCODEHASSSAUSE), 12)
// leaf opcodes
OPCODE(addrof, 取址节点类, OPCODENOTMMPL, 12)
OPCODE(iaddrof, 间接读取节点类, OPCODENOTMMPL, 12)
OPCODE(sizeoftype, 类型大小节点类, OPCODENOTMMPL, 8)
OPCODE(fieldsdist, FieldsDistNode, OPCODENOTMMPL, 8)
// N-ary expression opcodes
OPCODE(array, 数组节点类, (OPCODEISVARSIZE | OPCODENOTMMPL | OPCODEMAYTHROWEXCEPTION), 8)
// Stmt
// storage access opcodes
OPCODE(iassignoff, 带偏移间接赋值节点类, OPCODEISSTMT, 8)
OPCODE(iassignfpoff, 帧址带偏移间接赋值节点类, OPCODEISSTMT, 8)
OPCODE(regassign, 寄存器赋值节点类, (OPCODEISSTMT | OPCODEHASSSADEF), 8)
// flat control flow opcodes
OPCODE(goto, 跳转节点类, OPCODEISSTMT, 8)
OPCODE(brfalse, 条件跳转节点类, OPCODEISSTMT, 8)
OPCODE(brtrue, 条件跳转节点类, OPCODEISSTMT, 8)
OPCODE(return, NaryStmtNode, (OPCODEISSTMT | OPCODEISVARSIZE | OPCODEHASSSAUSE), 0)
OPCODE(rangegoto, 范围跳转节点类, OPCODEISSTMT, 8)
// call opcodes
OPCODE(call, 调用节点类, (OPCODEISSTMT | OPCODEISVARSIZE | OPCODEHASSSAUSE | OPCODEHASSSADEF | OPCODEISCALL), 8)
OPCODE(virtualcall, 调用节点类, (OPCODEISSTMT | OPCODEISVARSIZE | OPCODEHASSSAUSE | OPCODEHASSSADEF | OPCODEISCALL), 8)
OPCODE(superclasscall, 调用节点类, (OPCODEISSTMT | OPCODEISVARSIZE | OPCODEHASSSAUSE | OPCODEHASSSADEF | OPCODEISCALL), 8)
OPCODE(interfacecall, 调用节点类, (OPCODEISSTMT | OPCODEISVARSIZE | OPCODEHASSSAUSE | OPCODEHASSSADEF | OPCODEISCALL), 8)
OPCODE(customcall, 调用节点类, (OPCODEISSTMT | OPCODEISVARSIZE | OPCODEHASSSAUSE | OPCODEHASSSADEF | OPCODEISCALL), 8)
OPCODE(polymorphiccall, 调用节点类, (OPCODEISSTMT | OPCODEISVARSIZE | OPCODEHASSSAUSE | OPCODEHASSSADEF | OPCODEISCALL), 12)
OPCODE(icall, 间接调用节点类, (OPCODEISSTMT | OPCODEISVARSIZE | OPCODEHASSSAUSE | OPCODEHASSSADEF | OPCODEISCALL), 8)
OPCODE(interfaceicall, 调用节点类, (OPCODEISSTMT | OPCODEISVARSIZE | OPCODEHASSSAUSE | OPCODEHASSSADEF | OPCODEISCALL), 8)
OPCODE(virtualicall, 调用节点类, (OPCODEISSTMT | OPCODEISVARSIZE | OPCODEHASSSAUSE | OPCODEHASSSADEF | OPCODEISCALL), 8)
OPCODE(intrinsiccall, IntrinsiccallNode, (OPCODEISSTMT | OPCODEISVARSIZE | OPCODEHASSSAUSE | OPCODEHASSSADEF | OPCODEISCALL), 8)
OPCODE(intrinsiccallwithtype, IntrinsiccallNode, (OPCODEISSTMT | OPCODEISVARSIZE | OPCODEHASSSAUSE | OPCODEHASSSADEF | OPCODEISCALL), 12)
OPCODE(xintrinsiccall, IntrinsiccallNode, (OPCODEISSTMT | OPCODEISVARSIZE | OPCODEHASSSAUSE | OPCODEHASSSADEF | OPCODEISCALL), 8)
OPCODE(callassigned, 调用节点类, (OPCODEISSTMT | OPCODEISVARSIZE | OPCODEHASSSAUSE | OPCODEHASSSADEF | OPCODEISCALL | OPCODEISCALLASSIGNED), 0)
OPCODE(virtualcallassigned, 调用节点类, (OPCODEISSTMT | OPCODEISVARSIZE | OPCODEHASSSAUSE | OPCODEHASSSADEF | OPCODEISCALL | OPCODEISCALLASSIGNED), 0)
OPCODE(superclasscallassigned, 调用节点类, (OPCODEISSTMT | OPCODEISVARSIZE | OPCODEHASSSAUSE | OPCODEHASSSADEF | OPCODEISCALL | OPCODEISCALLASSIGNED), 0)
OPCODE(interfacecallassigned, 调用节点类, (OPCODEISSTMT | OPCODEISVARSIZE | OPCODEHASSSAUSE | OPCODEHASSSADEF | OPCODEISCALL | OPCODEISCALLASSIGNED), 0)
OPCODE(customcallassigned, 调用节点类, (OPCODEISSTMT | OPCODEISVARSIZE | OPCODEHASSSAUSE | OPCODEHASSSADEF | OPCODEISCALL | OPCODEISCALLASSIGNED), 0)
OPCODE(polymorphiccallassigned, 调用节点类, (OPCODEISSTMT | OPCODEISVARSIZE | OPCODEHASSSAUSE | OPCODEHASSSADEF | OPCODEISCALL | OPCODEISCALLASSIGNED), 0)
OPCODE(icallassigned, 间接调用节点类, (OPCODEISSTMT | OPCODEISVARSIZE | OPCODEHASSSAUSE | OPCODEHASSSADEF | OPCODEISCALL | OPCODEISCALLASSIGNED), 0)
OPCODE(interfaceicallassigned, 调用节点类, (OPCODEISSTMT | OPCODEISVARSIZE | OPCODEHASSSAUSE | OPCODEHASSSADEF | OPCODEISCALL | OPCODEISCALLASSIGNED), 0)
OPCODE(virtualicallassigned, 调用节点类, (OPCODEISSTMT | OPCODEISVARSIZE | OPCODEHASSSAUSE | OPCODEHASSSADEF | OPCODEISCALL | OPCODEISCALLASSIGNED), 0)
OPCODE(intrinsiccallassigned, IntrinsiccallNode, (OPCODEISSTMT | OPCODEISVARSIZE | OPCODEHASSSAUSE | OPCODEHASSSADEF | OPCODEISCALL | OPCODEISCALLASSIGNED), 0)
OPCODE(intrinsiccallwithtypeassigned, IntrinsiccallNode, (OPCODEISSTMT | OPCODEISVARSIZE | OPCODEHASSSAUSE | OPCODEHASSSADEF | OPCODEISCALL | OPCODEISCALLASSIGNED), 0)
OPCODE(xintrinsiccallassigned, IntrinsiccallNode, (OPCODEISSTMT | OPCODEISVARSIZE | OPCODEHASSSAUSE | OPCODEHASSSADEF | OPCODEISCALL | OPCODEISCALLASSIGNED), 0)
// call with generic instantiation opcodes
OPCODE(callinstant, 实例化调用节点类, (OPCODEISSTMT | OPCODEISVARSIZE | OPCODEHASSSAUSE | OPCODEHASSSADEF | OPCODEISCALL), 0)
OPCODE(callinstantassigned, 实例化调用节点类, (OPCODEISSTMT | OPCODEISVARSIZE | OPCODEHASSSAUSE | OPCODEHASSSADEF | OPCODEISCALL | OPCODEISCALLASSIGNED), 0)
OPCODE(virtualcallinstant, 实例化调用节点类, (OPCODEISSTMT | OPCODEISVARSIZE | OPCODEHASSSAUSE | OPCODEHASSSADEF | OPCODEISCALL), 0)
OPCODE(virtualcallinstantassigned, 实例化调用节点类, (OPCODEISSTMT | OPCODEISVARSIZE | OPCODEHASSSAUSE | OPCODEHASSSADEF | OPCODEISCALL | OPCODEISCALLASSIGNED), 0)
OPCODE(superclasscallinstant, 实例化调用节点类, (OPCODEISSTMT | OPCODEISVARSIZE | OPCODEHASSSAUSE | OPCODEHASSSADEF | OPCODEISCALL), 0)
OPCODE(superclasscallinstantassigned, 实例化调用节点类, (OPCODEISSTMT | OPCODEISVARSIZE | OPCODEHASSSAUSE | OPCODEHASSSADEF | OPCODEISCALL | OPCODEISCALLASSIGNED), 0)
OPCODE(interfacecallinstant, 实例化调用节点类, (OPCODEISSTMT | OPCODEISVARSIZE | OPCODEHASSSAUSE | OPCODEHASSSADEF | OPCODEISCALL), 0)
OPCODE(interfacecallinstantassigned, 实例化调用节点类, (OPCODEISSTMT | OPCODEISVARSIZE | OPCODEHASSSAUSE | OPCODEHASSSADEF | OPCODEISCALL | OPCODEISCALLASSIGNED), 0)
// exception handling
OPCODE(jstry, JsTryNode, OPCODEISSTMT, 8)
OPCODE(try, Try节点类, (OPCODEISSTMT | OPCODENOTMMPL), 8)
OPCODE(throw, 一元声明节点类, (OPCODEISSTMT | OPCODEHASSSAUSE), 0)
OPCODE(jscatch, 基础节点类, OPCODEISSTMT, 4)
OPCODE(catch, Catch节点类, OPCODEISSTMT, 8)
OPCODE(finally, StmtNode, OPCODEISSTMT, 6)
OPCODE(cleanuptry, StmtNode, OPCODEISSTMT, 6)
OPCODE(endtry, StmtNode, OPCODEISSTMT, 6)
OPCODE(gosub, 跳转节点类, (OPCODEISSTMT | OPCODEHASSSAUSE), 8)
OPCODE(retsub, StmtNode, (OPCODEISSTMT | OPCODEHASSSAUSE), 6)
// synchronizaion
OPCODE(syncenter, NaryStmtNode, (OPCODEISSTMT | OPCODEHASSSADEF | OPCODEHASSSAUSE), 0)
OPCODE(syncexit, NaryStmtNode, (OPCODEISSTMT | OPCODEHASSSADEF | OPCODEHASSSAUSE), 0)
OPCODE(decref, 一元声明节点类, (OPCODEISSTMT | OPCODEHASSSAUSE | OPCODENOTMMPL), 0)
OPCODE(incref, 一元声明节点类, (OPCODEISSTMT | OPCODEHASSSAUSE | OPCODENOTMMPL), 0)
OPCODE(decrefreset, 一元声明节点类, (OPCODEISSTMT | OPCODEHASSSAUSE | OPCODENOTMMPL), 0)
// barriers
OPCODE(membaracquire, StmtNode, OPCODEISSTMT, 6)
OPCODE(membarrelease, StmtNode, OPCODEISSTMT, 6)
OPCODE(membarstoreload, StmtNode, OPCODEISSTMT, 6)
OPCODE(membarstorestore, StmtNode, OPCODEISSTMT, 6)
// other opcodes
OPCODE(label, 标记节点类, OPCODEISSTMT, 8)
// Expr
// storage access opcodes
OPCODE(ireadoff, 带偏移间接读取节点类, 0, 8)
OPCODE(ireadfpoff, 帧址带偏移间接读取节点类, 0, 8)
OPCODE(regread, 寄存器读取节点类, OPCODEHASSSAUSE, 8)
// leaf opcodes
OPCODE(addroffunc, 函数取址节点类, 0, 8)
OPCODE(addroflabel, 标记取址节点类, 0, 8)
OPCODE(constval, 常量值节点类, 0, 8)
OPCODE(conststr, 常量字符串节点类, OPCODENOTMMPL, 8)
OPCODE(conststr16, 常量16字符串节点类, OPCODENOTMMPL, 8)
// type conversion expression opcodes
OPCODE(ceil, 类型转换节点类, OPCODEISTYPECVT, 8)
OPCODE(cvt, 类型转换节点类, OPCODEISTYPECVT, 8)
OPCODE(floor, 类型转换节点类, OPCODEISTYPECVT, 8)
OPCODE(retype, 类型重置节点类, OPCODEISTYPECVT, 8)
OPCODE(round, 类型转换节点类, OPCODEISTYPECVT, 8)
OPCODE(trunc, 类型转换节点类, OPCODEISTYPECVT, 8)
// unary expression opcodes
OPCODE(abs, 一元节点类, 0, 0)
OPCODE(bnot, 一元节点类, 0, 0)
OPCODE(lnot, 一元节点类, 0, 0)
OPCODE(neg, 一元节点类, 0, 0)
OPCODE(recip, 一元节点类, 0, 0)
OPCODE(sqrt, 一元节点类, 0, 0)
OPCODE(sext, 比特提取节点类, 0, 8)
OPCODE(zext, 比特提取节点类, 0, 8)
OPCODE(alloca, 一元节点类, OPCODENOTPURE, 0)
OPCODE(malloc, 一元节点类, OPCODENOTPURE, 0)
OPCODE(gcmalloc, 自动回收内存分配节点类, OPCODENOTPURE, 8)
OPCODE(gcpermalloc, 自动回收内存分配节点类, OPCODENOTPURE, 8)
OPCODE(gcmallocjarray, Java数组内存分配节点类, OPCODENOTPURE, 12)
OPCODE(gcpermallocjarray, Java数组内存分配节点类, OPCODENOTPURE, 12)
OPCODE(resolveinterfacefunc, ResolveFuncNode, 0, 8)
OPCODE(resolvevirtualfunc, ResolveFuncNode, 0, 8)
// binary expression opcodes
OPCODE(add, 二元节点类, 0, 0)
OPCODE(sub, 二元节点类, 0, 0)
OPCODE(mul, 二元节点类, 0, 0)
OPCODE(div, 二元节点类, OPCODEMAYTHROWEXCEPTION, 0)
OPCODE(rem, 二元节点类, OPCODEMAYTHROWEXCEPTION, 0)
OPCODE(ashr, 二元节点类, 0, 0)
OPCODE(lshr, 二元节点类, 0, 0)
OPCODE(shl, 二元节点类, 0, 0)
OPCODE(max, 二元节点类, 0, 0)
OPCODE(min, 二元节点类, 0, 0)
OPCODE(band, 二元节点类, 0, 0)
OPCODE(bior, 二元节点类, 0, 0)
OPCODE(bxor, 二元节点类, 0, 0)
OPCODE(CG_array_elem_add, 二元节点类, 0, 0)
OPCODE(eq, 比较节点类, OPCODEISCOMPARE, 8)
OPCODE(ge, 比较节点类, OPCODEISCOMPARE, 8)
OPCODE(gt, 比较节点类, OPCODEISCOMPARE, 8)
OPCODE(le, 比较节点类, OPCODEISCOMPARE, 8)
OPCODE(lt, 比较节点类, OPCODEISCOMPARE, 8)
OPCODE(ne, 比较节点类, OPCODEISCOMPARE, 8)
OPCODE(cmp, 比较节点类, OPCODEISCOMPARE, 8)
OPCODE(cmpl, 比较节点类, OPCODEISCOMPARE, 8)
OPCODE(cmpg, 比较节点类, OPCODEISCOMPARE, 8)
OPCODE(land, 二元节点类, 0, 0)
OPCODE(lior, 二元节点类, 0, 0)
OPCODE(cand, 二元节点类, OPCODENOTMMPL, 0)
OPCODE(cior, 二元节点类, OPCODENOTMMPL, 0)
// ternary expression opcodes
OPCODE(select, 三元节点类, 0, 0)
// N-ary expression opcodes
OPCODE(intrinsicop, IntrinsicopNode, OPCODEISVARSIZE, 8)
OPCODE(intrinsicopwithtype, IntrinsicopNode, OPCODEISVARSIZE, 12)
// Other expression opcodes
OPCODE(extractbits, 比特提取节点类, 0, 8)
OPCODE(depositbits, 比特放置节点类, 0, 8)
C++
1
https://gitee.com/Program-in-Chinese/OpenArkCompiler.git
git@gitee.com:Program-in-Chinese/OpenArkCompiler.git
Program-in-Chinese
OpenArkCompiler
OpenArkCompiler
master

搜索帮助