| 123456789101112131415161718192021222324252627282930313233 |
- /*
- * Copyright (C) 2022 The V-Gears Team
- *
- * This file is part of V-Gears
- *
- * V-Gears is free software: you can redistribute it and/or modify it under
- * terms of the GNU General Public License as published by the Free Software
- * Foundation, version 3.0 (GPLv3) of the License.
- *
- * V-Gears is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- */
- #include "decompiler/instruction/KernelCallStackInstruction.h"
- #include "decompiler/CodeGenerator.h"
- void KernelCallStackInstruction::ProcessInst(
- Function& function, ValueStack &stack, Engine* engine, CodeGenerator *code_gen
- ){
- code_gen->GetArgList().clear();
- bool returns_value = (code_gen_data_.find("r") == 0);
- std::string metadata = (!returns_value ? code_gen_data_ : code_gen_data_.substr(1));
- for (size_t i = 0; i < metadata.length(); i ++)
- code_gen->ProcessSpecialMetadata(this, metadata[i], i);
- stack.push(new CallValue(name_, code_gen->GetArgList()));
- if (!returns_value){
- std::stringstream stream;
- stream << stack.pop() << ";";
- code_gen->AddOutputLine(stream.str());
- }
- }
|