From d33a9852c54b3cfd45c665cae3b3f2130a80145d Mon Sep 17 00:00:00 2001 From: wqz <1197460504@qq.com> Date: Fri, 16 Jun 2023 12:59:47 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=A5=E5=85=A8binaryInst,=E5=AE=9E=E7=8E=B0?= =?UTF-8?q?=E4=BA=86=E4=BA=8C=E5=85=83=E8=BF=90=E7=AE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/backend/codegen.cpp | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/backend/codegen.cpp b/src/backend/codegen.cpp index ee6191f..05d0105 100644 --- a/src/backend/codegen.cpp +++ b/src/backend/codegen.cpp @@ -198,6 +198,26 @@ namespace backend /** *code in here */ + string lname, rname; + auto lhs = bInst->getLhs(); + if (isa(lhs)) + lname = to_string(dynamic_cast(lhs)->getInt()); + else + lname = "r" + lhs->getName(); + auto rhs = bInst->getRhs(); + if (isa(rhs)) + rname = to_string(dynamic_cast(rhs)->getInt()); + else + rname = "r" + rhs->getName(); + auto res = stoi(bInst->getName()); + if (bInst->getKind() == Instruction::kAdd) + code += space + "add\tr" + to_string(res) + ", " + lname + ", " + rname + endl; + else if (bInst->getKind() == Instruction::kSub) + code += space + "sub\tr" + to_string(res) + ", " + lname + ", " + rname + endl; + else if (bInst->getKind() == Instruction::kMul) + code += space + "mul\tr" + to_string(res) + ", " + lname + ", " + rname + endl; + else if (bInst->getKind() == Instruction::kDiv) + code += space + "div\tr" + to_string(res) + ", " + lname + ", " + rname + endl; return {dstRegId, code}; }