Typo fixes & Windows QoL changes (#189)

* Add a Release build configuration.

* Batch file alternatives for decomp/gc/gk

For the shell-less, or people with a different Windows configuration.

* all-types.gc: Fix typo.

* gcommon.gc: Typo.

* debugger: use enum class for InstructionInfo::Kind

* decompilerIR: use enum class for IR_Store::Kind

* Update all-types.gc

* decompiler: tab to spaces

* root batch files: update directories

* Use a gitignore inside "log" folder to fix windows crashes

* Revert "Update all-types.gc"

This reverts commit 5ef179bb4e.
This commit is contained in:
ManDude
2021-01-10 15:39:32 +00:00
committed by GitHub
parent 2901f4a99e
commit e5b0541d98
14 changed files with 386 additions and 372 deletions
+32 -32
View File
@@ -1,60 +1,60 @@
add_library(
decomp
SHARED
data/game_count.cpp
data/game_text.cpp
data/StrFileReader.cpp
data/tpage.cpp
data/game_count.cpp
data/game_text.cpp
data/StrFileReader.cpp
data/tpage.cpp
Disasm/Instruction.cpp
Disasm/InstructionDecode.cpp
Disasm/InstructionMatching.cpp
Disasm/InstructionParser.cpp
Disasm/InstructionMatching.cpp
Disasm/InstructionParser.cpp
Disasm/OpcodeInfo.cpp
Disasm/Register.cpp
Function/BasicBlocks.cpp
Function/CfgVtx.cpp
Function/ExpressionBuilder.cpp
Function/ExpressionStack.cpp
Function/Function.cpp
Function/RegUsage.cpp
Function/TypeAnalysis.cpp
Function/TypeInspector.cpp
Function/BasicBlocks.cpp
Function/CfgVtx.cpp
Function/ExpressionBuilder.cpp
Function/ExpressionStack.cpp
Function/Function.cpp
Function/RegUsage.cpp
Function/TypeAnalysis.cpp
Function/TypeInspector.cpp
IR/BasicOpBuilder.cpp
IR/CfgBuilder.cpp
IR/IR.cpp
IR/IR_ExpressionStack.cpp
IR/IR_TypeAnalysis.cpp
IR/BasicOpBuilder.cpp
IR/CfgBuilder.cpp
IR/IR.cpp
IR/IR_ExpressionStack.cpp
IR/IR_TypeAnalysis.cpp
IR2/AtomicOp.cpp
IR2/AtomicOpBuilder.cpp
IR2/Env.cpp
IR2/AtomicOp.cpp
IR2/AtomicOpBuilder.cpp
IR2/Env.cpp
ObjectFile/LinkedObjectFile.cpp
ObjectFile/LinkedObjectFile.cpp
ObjectFile/LinkedObjectFileCreation.cpp
ObjectFile/ObjectFileDB.cpp
ObjectFile/ObjectFileDB_IR2.cpp
ObjectFile/ObjectFileDB.cpp
ObjectFile/ObjectFileDB_IR2.cpp
util/DecompilerTypeSystem.cpp
util/TP_Type.cpp
util/TP_Type.cpp
config.cpp
config.cpp
)
target_link_libraries(decomp
minilzo
common
fmt
)
minilzo
common
fmt
)
add_executable(decompiler
main.cpp
)
target_link_libraries(decompiler
decomp
decomp
common
minilzo
fmt)
+10 -10
View File
@@ -1009,7 +1009,7 @@ std::shared_ptr<IR_Atomic> try_sw(Instruction& instr, int idx) {
return op;
} else if (instr.kind == InstructionKind::SW && instr.get_src(1).is_imm()) {
if (instr.get_src(1).get_imm() == 0) {
auto op = std::make_shared<IR_Store_Atomic>(IR_Store_Atomic::INTEGER,
auto op = std::make_shared<IR_Store_Atomic>(IR_Store_Atomic::Kind::INTEGER,
make_reg(instr.get_src(2).get_reg(), idx),
make_reg(instr.get_src(0).get_reg(), idx), 4);
op->update_reginfo_self(0, 2, 0);
@@ -1027,7 +1027,7 @@ std::shared_ptr<IR_Atomic> try_sw(Instruction& instr, int idx) {
return op;
} else {
auto op = std::make_shared<IR_Store_Atomic>(
IR_Store_Atomic::INTEGER,
IR_Store_Atomic::Kind::INTEGER,
std::make_shared<IR_IntMath2>(
IR_IntMath2::ADD, make_reg(instr.get_src(2).get_reg(), idx),
std::make_shared<IR_IntegerConstant>(instr.get_src(1).get_imm())),
@@ -1044,13 +1044,13 @@ std::shared_ptr<IR_Atomic> try_sb(Instruction& instr, int idx) {
if (instr.kind == InstructionKind::SB && instr.get_src(1).is_imm()) {
if (instr.get_src(1).get_imm() == 0) {
if (instr.get_src(0).is_reg(make_gpr(Reg::R0))) {
auto op = std::make_shared<IR_Store_Atomic>(IR_Store_Atomic::INTEGER,
auto op = std::make_shared<IR_Store_Atomic>(IR_Store_Atomic::Kind::INTEGER,
make_reg(instr.get_src(2).get_reg(), idx),
std::make_shared<IR_IntegerConstant>(0), 1);
op->update_reginfo_self(0, 1, 0);
return op;
} else {
auto op = std::make_shared<IR_Store_Atomic>(IR_Store_Atomic::INTEGER,
auto op = std::make_shared<IR_Store_Atomic>(IR_Store_Atomic::Kind::INTEGER,
make_reg(instr.get_src(2).get_reg(), idx),
make_reg(instr.get_src(0).get_reg(), idx), 1);
op->update_reginfo_self(0, 2, 0);
@@ -1060,7 +1060,7 @@ std::shared_ptr<IR_Atomic> try_sb(Instruction& instr, int idx) {
} else {
if (instr.get_src(0).is_reg(make_gpr(Reg::R0))) {
auto op = std::make_shared<IR_Store_Atomic>(
IR_Store_Atomic::INTEGER,
IR_Store_Atomic::Kind::INTEGER,
std::make_shared<IR_IntMath2>(
IR_IntMath2::ADD, make_reg(instr.get_src(2).get_reg(), idx),
std::make_shared<IR_IntegerConstant>(instr.get_src(1).get_imm())),
@@ -1069,7 +1069,7 @@ std::shared_ptr<IR_Atomic> try_sb(Instruction& instr, int idx) {
return op;
} else {
auto op = std::make_shared<IR_Store_Atomic>(
IR_Store_Atomic::INTEGER,
IR_Store_Atomic::Kind::INTEGER,
std::make_shared<IR_IntMath2>(
IR_IntMath2::ADD, make_reg(instr.get_src(2).get_reg(), idx),
std::make_shared<IR_IntegerConstant>(instr.get_src(1).get_imm())),
@@ -1085,7 +1085,7 @@ std::shared_ptr<IR_Atomic> try_sb(Instruction& instr, int idx) {
std::shared_ptr<IR_Atomic> try_sh(Instruction& instr, int idx) {
if (instr.kind == InstructionKind::SH && instr.get_src(1).is_imm()) {
auto op = std::make_shared<IR_Store_Atomic>(
IR_Store_Atomic::INTEGER,
IR_Store_Atomic::Kind::INTEGER,
std::make_shared<IR_IntMath2>(
IR_IntMath2::ADD, make_reg(instr.get_src(2).get_reg(), idx),
std::make_shared<IR_IntegerConstant>(instr.get_src(1).get_imm())),
@@ -1099,7 +1099,7 @@ std::shared_ptr<IR_Atomic> try_sh(Instruction& instr, int idx) {
std::shared_ptr<IR_Atomic> try_sd(Instruction& instr, int idx) {
if (instr.kind == InstructionKind::SD && instr.get_src(1).is_imm()) {
auto op = std::make_shared<IR_Store_Atomic>(
IR_Store_Atomic::INTEGER,
IR_Store_Atomic::Kind::INTEGER,
std::make_shared<IR_IntMath2>(
IR_IntMath2::ADD, make_reg(instr.get_src(2).get_reg(), idx),
std::make_shared<IR_IntegerConstant>(instr.get_src(1).get_imm())),
@@ -1113,7 +1113,7 @@ std::shared_ptr<IR_Atomic> try_sd(Instruction& instr, int idx) {
std::shared_ptr<IR_Atomic> try_sq(Instruction& instr, int idx) {
if (instr.kind == InstructionKind::SQ && instr.get_src(1).is_imm()) {
auto op = std::make_shared<IR_Store_Atomic>(
IR_Store_Atomic::INTEGER,
IR_Store_Atomic::Kind::INTEGER,
std::make_shared<IR_IntMath2>(
IR_IntMath2::ADD, make_reg(instr.get_src(2).get_reg(), idx),
std::make_shared<IR_IntegerConstant>(instr.get_src(1).get_imm())),
@@ -1127,7 +1127,7 @@ std::shared_ptr<IR_Atomic> try_sq(Instruction& instr, int idx) {
std::shared_ptr<IR_Atomic> try_swc1(Instruction& instr, int idx) {
if (instr.kind == InstructionKind::SWC1 && instr.get_src(1).is_imm()) {
auto op = std::make_shared<IR_Store_Atomic>(
IR_Store_Atomic::FLOAT,
IR_Store_Atomic::Kind::FLOAT,
std::make_shared<IR_IntMath2>(
IR_IntMath2::ADD, make_reg(instr.get_src(2).get_reg(), idx),
std::make_shared<IR_IntegerConstant>(instr.get_src(1).get_imm())),
+4 -4
View File
@@ -275,10 +275,10 @@ void IR_Set_Atomic::update_reginfo_regreg() {
goos::Object IR_Store::to_form(const LinkedObjectFile& file) const {
std::string store_operator;
switch (kind) {
case FLOAT:
case Kind::FLOAT:
store_operator = "s.f";
break;
case INTEGER:
case Kind::INTEGER:
switch (size) {
case 1:
store_operator = "s.b";
@@ -310,10 +310,10 @@ goos::Object IR_Store::to_form(const LinkedObjectFile& file) const {
goos::Object IR_Store_Atomic::to_form(const LinkedObjectFile& file) const {
std::string store_operator;
switch (kind) {
case FLOAT:
case Kind::FLOAT:
store_operator = "s.f";
break;
case INTEGER:
case Kind::INTEGER:
switch (size) {
case 1:
store_operator = "s.b";
+2 -2
View File
@@ -139,7 +139,7 @@ void IR_Set_Atomic::update_reginfo_self<IR_IntMath2>(int n_dest, int n_src, int
class IR_Store : public virtual IR_Set {
public:
enum Kind { INTEGER, FLOAT } kind;
enum class Kind { INTEGER, FLOAT } kind;
IR_Store(Kind _kind, std::shared_ptr<IR> _dst, std::shared_ptr<IR> _src, int _size)
: IR_Set(IR_Set::STORE, std::move(_dst), std::move(_src)), kind(_kind), size(_size) {}
int size;
@@ -152,7 +152,7 @@ class IR_Store : public virtual IR_Set {
*/
class IR_Store_Atomic : public IR_Set_Atomic {
public:
enum Kind { INTEGER, FLOAT } kind;
enum class Kind { INTEGER, FLOAT } kind;
IR_Store_Atomic(Kind _kind, std::shared_ptr<IR> _dst, std::shared_ptr<IR> _src, int _size)
: IR_Set_Atomic(IR_Set::STORE, std::move(_dst), std::move(_src)), kind(_kind), size(_size) {}
int size;
File diff suppressed because it is too large Load Diff