Haili Xiao

11 papers C 1Journal 4Unranked 6
YearRankTypeTitle / Venue / Authors
2026 J jnl
CCF Trans. High Perform. Comput.
Tao Chen, Xiaoning Wang, Guanlong Li, Yining Zhao, Haili Xiao
2025 J jnl
CCF Trans. High Perform. Comput.
Xiaoning Wang, Yining Zhao, Shasha Lu, Haili Xiao
2025 J jnl
CCF Trans. High Perform. Comput.
Sheng Dong, Xiaoning Wang, Can Wu, Rong He, Haili Xiao
2019 J jnl
计算机科学
Can Wu, Xiaoning Wang, Haili Xiao, Rongqiang Cao, Yining Zhao, Xuebin Chi
2018 conf
IPDPS Workshops
Can Wu, Xiaoning Wang, Haili Xiao, Rongqiang Cao, Yining Zhao, Xuebin Chi
2018 conf
IPDPS Workshops
Yining Zhao, Xiaodong Wang, Haili Xiao, Xuebin Chi
2016 conf
IPDPS Workshops
Yining Zhao, Haili Xiao
2009 C conf
ISPA
Rongqiang Cao, Xuebin Chi, Zongyan Cao, Zhihui Dai, Haili Xiao
2008 conf
GridNets
Haili Xiao, Hong Wu, Xuebin Chi
2007 conf
GCC
Zhihui Dai, Lingjiang Wu, Haili Xiao, Hong Wu, Xuebin Chi
2005 conf
ACSW
Haili Xiao, Hong Wu, Xuebin Chi, Sungen Deng, Honghai Zhang
redb/extractors/decompiler/bninja/analysis/low_level_normalization.py
← Index redb/extractors/decompiler/bninja/analysis/low_level_normalization.py python
from binaryninja import (
    ILRegister, ILRegisterStack, ILFlag,
    ILIntrinsic, ILSemanticFlagGroup,
)

class LowLevelNormalization:
    def __init__(self):
        return

    def _collect_ops(self, il, ops):
        if il is None:
            return
        ops.append(int(il.operation))
        operands = getattr(il, "operands", None)
        if not operands:
            return
        for op in operands:
            if hasattr(op, "operation"):
                self._collect_ops(op, ops)
            elif isinstance(op, (list, tuple)):
                for sub in op:
                    if hasattr(sub, "operation"):
                        self._collect_ops(sub, ops)

    def normalize_instruction_all_levels(self, instr_il):
        ops = []
        self._collect_ops(instr_il, ops)

        return ops

    def _leaf_type(self, val):
        if isinstance(val, ILRegister):
            return "REG"
        if isinstance(val, ILRegisterStack):
            return "REG_STACK"
        if isinstance(val, ILFlag):
            return "FLAG"
        if isinstance(val, ILSemanticFlagGroup):
            return "FLAG_GROUP"
        if isinstance(val, ILIntrinsic):
            return "INTRINSIC"
        if isinstance(val, bool):
            return "BOOL"
        if isinstance(val, int):
            return "CONST"
        return type(val).__name__.upper()

    def _collect(self, il, out):
        if il is None:
            return
        out.append(int(il.operation))
        operands = getattr(il, "operands", None)
        if not operands:
            return
        for op in operands:
            if hasattr(op, "operation"):
                self._collect(op, out)
            elif isinstance(op, (list, tuple)):
                for sub in op:
                    if hasattr(sub, "operation"):
                        self._collect(sub, out)
                    else:
                        out.append(self._leaf_type(sub))
            else:
                out.append(self._leaf_type(op))

    def normalize_instr_with_operands(self, instr_il):
        ops = []
        self._collect(instr_il, ops)
        return ops