Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 2 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,8 @@ set(GOODASM_SOURCES
galangarm7tdmi.h galangarm7tdmi.cpp
galangtms320c28x.h galangtms320c28x.cpp
galangti80.h galangti80.cpp
galangriscv32.h galangriscv32.cpp
galangriscv.h galangriscv.cpp
)


Expand Down
5 changes: 5 additions & 0 deletions galangriscv.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
#include "galangriscv.h"

GALangRISCV::GALangRISCV() : GALangRISCV32() {
name = "riscv";
}
12 changes: 12 additions & 0 deletions galangriscv.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
#ifndef GALANGRISCV_H
#define GALANGRISCV_H

#include "galangriscv32.h"

class GALangRISCV : public GALangRISCV32
{
public:
GALangRISCV();
};

#endif // GALANGRISCV_H
4,582 changes: 4,582 additions & 0 deletions galangriscv32.cpp

Large diffs are not rendered by default.

346 changes: 346 additions & 0 deletions galangriscv32.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,346 @@
#ifndef GALANGRISCV32_H
#define GALANGRISCV32_H

#include "galanguage.h"
#include "gaparameter.h"
#include "gamnemonic.h"

class GALangRISCV32 : public GALanguage
{
public:
GALangRISCV32();
};

class GAParameterRiscvReg : public GAParameter {
public:
GAParameterRiscvReg(const char* mask);
int match(GAParserOperand *op, int len) override;

QString decode(GALanguage *lang, uint64_t adr,
const char *bytes, int inslen) override;

void encode(GALanguage *lang,
uint64_t adr, QByteArray &bytes,
GAParserOperand op,
int inslen
) override;
};


class GAParameterRiscvImm12 : public GAParameter {
public:
GAParameterRiscvImm12(const char* mask);
int match(GAParserOperand *op, int len) override;

QString decode(GALanguage *lang, uint64_t adr,
const char *bytes, int inslen) override;
void encode(GALanguage *lang,
uint64_t adr, QByteArray &bytes,
GAParserOperand op,
int inslen
) override;
};

class GAParameterRiscvUtypeImm20 : public GAParameter {
public:
GAParameterRiscvUtypeImm20(const char* mask);
int match(GAParserOperand *op, int len) override;

QString decode(GALanguage *lang, uint64_t adr,
const char *bytes, int inslen) override;

void encode(GALanguage *lang,
uint64_t adr, QByteArray &bytes,
GAParserOperand op,
int inslen
) override;
};

class GAParameterRiscvBtypeImm13 : public GAParameter {
public:
GAParameterRiscvBtypeImm13(const char* mask);
int match(GAParserOperand *op, int len) override;

QString decode(GALanguage *lang, uint64_t adr,
const char *bytes, int inslen) override;

void encode(GALanguage *lang,
uint64_t adr, QByteArray &bytes,
GAParserOperand op,
int inslen
) override;
};

class GAParameterRiscvJtypeImm21 : public GAParameter {
public:
GAParameterRiscvJtypeImm21(const char* mask);
int match(GAParserOperand *op, int len) override;

QString decode(GALanguage *lang, uint64_t adr,
const char *bytes, int inslen) override;

void encode(GALanguage *lang,
uint64_t adr, QByteArray &bytes,
GAParserOperand op,
int inslen
) override;
};

class GAParameterRiscvStypeImm12 : public GAParameter {
public:
GAParameterRiscvStypeImm12(const char* mask);
int match(GAParserOperand *op, int len) override;

QString decode(GALanguage *lang, uint64_t adr,
const char *bytes, int inslen) override;

void encode(GALanguage *lang,
uint64_t adr, QByteArray &bytes,
GAParserOperand op,
int inslen
) override;
};

class GAParameterRiscvFencePredSucc : public GAParameter {
public:
GAParameterRiscvFencePredSucc(const char* mask);
int match(GAParserOperand *op, int len) override;

QString decode(GALanguage *lang, uint64_t adr,
const char *bytes, int inslen) override;

void encode(GALanguage *lang,
uint64_t adr, QByteArray &bytes,
GAParserOperand op,
int inslen
) override;
};

class GAParameterRiscvShamt5 : public GAParameter {
public:
GAParameterRiscvShamt5(const char* mask);
int match(GAParserOperand *op, int len) override;

QString decode(GALanguage *lang, uint64_t adr,
const char *bytes, int inslen) override;

void encode(GALanguage *lang,
uint64_t adr, QByteArray &bytes,
GAParserOperand op,
int inslen
) override;
};

class GAParameterRiscvCsr12 : public GAParameter {
public:
GAParameterRiscvCsr12(const char* mask);
int match(GAParserOperand *op, int len) override;

QString decode(GALanguage *lang, uint64_t adr,
const char *bytes, int inslen) override;

void encode(GALanguage *lang,
uint64_t adr, QByteArray &bytes,
GAParserOperand op,
int inslen
) override;
};

class GAParameterRiscvUimm5 : public GAParameter {
public:
GAParameterRiscvUimm5(const char* mask);
int match(GAParserOperand *op, int len) override;

QString decode(GALanguage *lang, uint64_t adr,
const char *bytes, int inslen) override;

void encode(GALanguage *lang,
uint64_t adr, QByteArray &bytes,
GAParserOperand op,
int inslen
) override;
};

// C Extension parameter types for compressed 16-bit instructions

class GAParameterRiscvCompReg : public GAParameter {
public:
GAParameterRiscvCompReg(const char* mask);
int match(GAParserOperand *op, int len) override;

QString decode(GALanguage *lang, uint64_t adr,
const char *bytes, int inslen) override;

void encode(GALanguage *lang,
uint64_t adr, QByteArray &bytes,
GAParserOperand op,
int inslen
) override;
};

class GAParameterRiscvCIimm6 : public GAParameter {
public:
GAParameterRiscvCIimm6(const char* mask);
int match(GAParserOperand *op, int len) override;

QString decode(GALanguage *lang, uint64_t adr,
const char *bytes, int inslen) override;

void encode(GALanguage *lang,
uint64_t adr, QByteArray &bytes,
GAParserOperand op,
int inslen
) override;
};

class GAParameterRiscvCIUimm6 : public GAParameter {
public:
GAParameterRiscvCIUimm6(const char* mask);
int match(GAParserOperand *op, int len) override;

QString decode(GALanguage *lang, uint64_t adr,
const char *bytes, int inslen) override;

void encode(GALanguage *lang,
uint64_t adr, QByteArray &bytes,
GAParserOperand op,
int inslen
) override;
};

class GAParameterRiscvCIUimm6Srai : public GAParameter {
public:
GAParameterRiscvCIUimm6Srai(const char* mask);
int match(GAParserOperand *op, int len) override;

QString decode(GALanguage *lang, uint64_t adr,
const char *bytes, int inslen) override;

void encode(GALanguage *lang,
uint64_t adr, QByteArray &bytes,
GAParserOperand op,
int inslen
) override;
};

class GAParameterRiscvCIimm7 : public GAParameter {
public:
GAParameterRiscvCIimm7(const char* mask);
int match(GAParserOperand *op, int len) override;

QString decode(GALanguage *lang, uint64_t adr,
const char *bytes, int inslen) override;

void encode(GALanguage *lang,
uint64_t adr, QByteArray &bytes,
GAParserOperand op,
int inslen
) override;
};

class GAParameterRiscvCIWimm9 : public GAParameter {
public:
GAParameterRiscvCIWimm9(const char* mask);
int match(GAParserOperand *op, int len) override;

QString decode(GALanguage *lang, uint64_t adr,
const char *bytes, int inslen) override;

void encode(GALanguage *lang,
uint64_t adr, QByteArray &bytes,
GAParserOperand op,
int inslen
) override;
};

class GAParameterRiscvCLimm5 : public GAParameter {
public:
GAParameterRiscvCLimm5(const char* mask);
int match(GAParserOperand *op, int len) override;

QString decode(GALanguage *lang, uint64_t adr,
const char *bytes, int inslen) override;

void encode(GALanguage *lang,
uint64_t adr, QByteArray &bytes,
GAParserOperand op,
int inslen
) override;
};

class GAParameterRiscvCSimm5 : public GAParameter {
public:
GAParameterRiscvCSimm5(const char* mask);
int match(GAParserOperand *op, int len) override;

QString decode(GALanguage *lang, uint64_t adr,
const char *bytes, int inslen) override;

void encode(GALanguage *lang,
uint64_t adr, QByteArray &bytes,
GAParserOperand op,
int inslen
) override;
};

class GAParameterRiscvCSSimm7 : public GAParameter {
public:
GAParameterRiscvCSSimm7(const char* mask);
int match(GAParserOperand *op, int len) override;

QString decode(GALanguage *lang, uint64_t adr,
const char *bytes, int inslen) override;

void encode(GALanguage *lang,
uint64_t adr, QByteArray &bytes,
GAParserOperand op,
int inslen
) override;
};

class GAParameterRiscvCBimm9 : public GAParameter {
public:
GAParameterRiscvCBimm9(const char* mask);
int match(GAParserOperand *op, int len) override;

QString decode(GALanguage *lang, uint64_t adr,
const char *bytes, int inslen) override;

void encode(GALanguage *lang,
uint64_t adr, QByteArray &bytes,
GAParserOperand op,
int inslen
) override;
};

class GAParameterRiscvCJimm12 : public GAParameter {
public:
GAParameterRiscvCJimm12(const char* mask);
int match(GAParserOperand *op, int len) override;

QString decode(GALanguage *lang, uint64_t adr,
const char *bytes, int inslen) override;

void encode(GALanguage *lang,
uint64_t adr, QByteArray &bytes,
GAParserOperand op,
int inslen
) override;
};

class GAParameterRiscvCBimm6Andi : public GAParameter {
public:
GAParameterRiscvCBimm6Andi(const char* mask);
int match(GAParserOperand *op, int len) override;

QString decode(GALanguage *lang, uint64_t adr,
const char *bytes, int inslen) override;

void encode(GALanguage *lang,
uint64_t adr, QByteArray &bytes,
GAParserOperand op,
int inslen
) override;
};

#endif // GALANGRISCV32_H
Loading