mirror of
https://github.com/ton-blockchain/ton
synced 2025-03-09 15:40:10 +00:00
Add namespaces to Fift (#641)
* Add fift-based disassembler * Fift improvements: namespaces, hashmaps, flow controls * Fift: add lib with better block structuring and more * Minor changes in fift HashMap + tests (#643) * Minor changes in fift HashMap * Add tests for extended fift --------- Co-authored-by: OmicronTau <omicron@ton.org> Co-authored-by: Tolya <1449561+tolya-yanot@users.noreply.github.com> Co-authored-by: SpyCheese <mikle98@yandex.ru>
This commit is contained in:
parent
4590ed381b
commit
865ebfce8d
31 changed files with 2323 additions and 699 deletions
|
@ -357,32 +357,32 @@ using namespace std::placeholders;
|
|||
|
||||
dump_arg_instr_func_t dump_1sr(std::string prefix, std::string suffix) {
|
||||
return [prefix, suffix](CellSlice&, unsigned args) -> std::string {
|
||||
std::ostringstream os{prefix};
|
||||
os << 's' << (args & 15) << suffix;
|
||||
std::ostringstream os;
|
||||
os << prefix << 's' << (args & 15) << suffix;
|
||||
return os.str();
|
||||
};
|
||||
}
|
||||
|
||||
dump_arg_instr_func_t dump_1sr_l(std::string prefix, std::string suffix) {
|
||||
return [prefix, suffix](CellSlice&, unsigned args) -> std::string {
|
||||
std::ostringstream os{prefix};
|
||||
os << 's' << (args & 255) << suffix;
|
||||
std::ostringstream os;
|
||||
os << prefix << 's' << (args & 255) << suffix;
|
||||
return os.str();
|
||||
};
|
||||
}
|
||||
|
||||
dump_arg_instr_func_t dump_2sr(std::string prefix, std::string suffix) {
|
||||
return [prefix, suffix](CellSlice&, unsigned args) -> std::string {
|
||||
std::ostringstream os{prefix};
|
||||
os << 's' << ((args >> 4) & 15) << ",s" << (args & 15) << suffix;
|
||||
std::ostringstream os;
|
||||
os << prefix << 's' << ((args >> 4) & 15) << ",s" << (args & 15) << suffix;
|
||||
return os.str();
|
||||
};
|
||||
}
|
||||
|
||||
dump_arg_instr_func_t dump_2sr_adj(unsigned adj, std::string prefix, std::string suffix) {
|
||||
return [adj, prefix, suffix](CellSlice&, unsigned args) -> std::string {
|
||||
std::ostringstream os{prefix};
|
||||
os << 's' << (int)((args >> 4) & 15) - (int)((adj >> 4) & 15) << ",s" << (int)(args & 15) - (int)(adj & 15)
|
||||
std::ostringstream os;
|
||||
os << prefix << 's' << (int)((args >> 4) & 15) - (int)((adj >> 4) & 15) << ",s" << (int)(args & 15) - (int)(adj & 15)
|
||||
<< suffix;
|
||||
return os.str();
|
||||
};
|
||||
|
@ -390,16 +390,16 @@ dump_arg_instr_func_t dump_2sr_adj(unsigned adj, std::string prefix, std::string
|
|||
|
||||
dump_arg_instr_func_t dump_3sr(std::string prefix, std::string suffix) {
|
||||
return [prefix, suffix](CellSlice&, unsigned args) -> std::string {
|
||||
std::ostringstream os{prefix};
|
||||
os << 's' << ((args >> 8) & 15) << ",s" << ((args >> 4) & 15) << ",s" << (args & 15) << suffix;
|
||||
std::ostringstream os;
|
||||
os << prefix << 's' << ((args >> 8) & 15) << ",s" << ((args >> 4) & 15) << ",s" << (args & 15) << suffix;
|
||||
return os.str();
|
||||
};
|
||||
}
|
||||
|
||||
dump_arg_instr_func_t dump_3sr_adj(unsigned adj, std::string prefix, std::string suffix) {
|
||||
return [adj, prefix, suffix](CellSlice&, unsigned args) -> std::string {
|
||||
std::ostringstream os{prefix};
|
||||
os << 's' << (int)((args >> 8) & 15) - (int)((adj >> 8) & 15) << ",s"
|
||||
std::ostringstream os;
|
||||
os << prefix << 's' << (int)((args >> 8) & 15) - (int)((adj >> 8) & 15) << ",s"
|
||||
<< (int)((args >> 4) & 15) - (int)((adj >> 4) & 15) << ",s" << (int)(args & 15) - (int)(adj & 15) << suffix;
|
||||
return os.str();
|
||||
};
|
||||
|
@ -407,40 +407,40 @@ dump_arg_instr_func_t dump_3sr_adj(unsigned adj, std::string prefix, std::string
|
|||
|
||||
dump_arg_instr_func_t dump_1c(std::string prefix, std::string suffix) {
|
||||
return [prefix, suffix](CellSlice&, unsigned args) -> std::string {
|
||||
std::ostringstream os{prefix};
|
||||
os << (args & 15) << suffix;
|
||||
std::ostringstream os;
|
||||
os << prefix << (args & 15) << suffix;
|
||||
return os.str();
|
||||
};
|
||||
}
|
||||
|
||||
dump_arg_instr_func_t dump_1c_l_add(int adj, std::string prefix, std::string suffix) {
|
||||
return [adj, prefix, suffix](CellSlice&, unsigned args) -> std::string {
|
||||
std::ostringstream os{prefix};
|
||||
os << (int)(args & 255) + adj << suffix;
|
||||
std::ostringstream os;
|
||||
os << prefix << (int)(args & 255) + adj << suffix;
|
||||
return os.str();
|
||||
};
|
||||
}
|
||||
|
||||
dump_arg_instr_func_t dump_1c_and(unsigned mask, std::string prefix, std::string suffix) {
|
||||
return [mask, prefix, suffix](CellSlice&, unsigned args) -> std::string {
|
||||
std::ostringstream os{prefix};
|
||||
os << (args & mask) << suffix;
|
||||
std::ostringstream os;
|
||||
os << prefix << (args & mask) << suffix;
|
||||
return os.str();
|
||||
};
|
||||
}
|
||||
|
||||
dump_arg_instr_func_t dump_2c(std::string prefix, std::string interfix, std::string suffix) {
|
||||
return [prefix, interfix, suffix](CellSlice&, unsigned args) -> std::string {
|
||||
std::ostringstream os{prefix};
|
||||
os << ((args >> 4) & 15) << interfix << (args & 15) << suffix;
|
||||
std::ostringstream os;
|
||||
os << prefix << ((args >> 4) & 15) << interfix << (args & 15) << suffix;
|
||||
return os.str();
|
||||
};
|
||||
}
|
||||
|
||||
dump_arg_instr_func_t dump_2c_add(unsigned add, std::string prefix, std::string interfix, std::string suffix) {
|
||||
return [add, prefix, interfix, suffix](CellSlice&, unsigned args) -> std::string {
|
||||
std::ostringstream os{prefix};
|
||||
os << ((args >> 4) & 15) + ((add >> 4) & 15) << interfix << (args & 15) + (add & 15) << suffix;
|
||||
std::ostringstream os;
|
||||
os << prefix << ((args >> 4) & 15) + ((add >> 4) & 15) << interfix << (args & 15) + (add & 15) << suffix;
|
||||
return os.str();
|
||||
};
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue