* Copyright (c) Huawei Technologies Co., Ltd. 2023-2024. All rights reserved.
*/
#ifdef MS_DEBUGGER
#include "AscendDisassemblerHelper.h"
#include "AscendDisassembler310P.h"
#include "AscendDisassembler910B.h"
#include "AscendDisassembler950.h"
#include <memory>
using namespace lldb_private;
using namespace std;
void AscendDisassemblerHelper::GetInstruction(const uint8_t *opcode_data,
const size_t opcode_data_len,
const ArchSpec &arch,
uint64_t &flags,
uint64_t &inst_size) {
shared_ptr<AscendDisassembler> disa;
switch (arch.GetSocType()) {
case SocType::ASCEND310P:
disa = make_shared<AscendDisassembler310P>();
break;
case SocType::ASCEND910B:
disa = make_shared<AscendDisassembler910B>();
break;
case SocType::ASCEND950:
disa = make_shared<AscendDisassembler950>();
break;
default:
flags = 0;
inst_size = 4;
return;
}
disa->GetInstruction(opcode_data, opcode_data_len, flags, arch.GetPosType(), inst_size);
}
#endif