MXVM 1.8.1
Virtual Machine, Compiler, and Pascal Frontend
Loading...
Searching...
No Matches
icode.cpp File Reference

Pascal-to-MXVM code generator — CodeGenVisitor visit methods and assembly output. More...

#include "icode.hpp"
#include <algorithm>
#include <regex>
#include <sstream>
#include <string>
#include <unordered_set>
#include <vector>
Include dependency graph for icode.cpp:

Go to the source code of this file.

Namespaces

namespace  pascal

Functions

static std::string pascal::rtrim_comment (const std::string &line)
static std::string pascal::trim (const std::string &s)
static void pascal::locate_sections (const std::vector< std::string > &lines, size_t &dataStart, size_t &dataEnd, size_t &codeStart, size_t &codeEnd)
static std::unordered_set< std::string > pascal::collect_used (const std::vector< std::string > &lines, size_t codeStart, size_t codeEnd)
static void pascal::sweep_unused_data (std::vector< std::string > &lines)
static std::vector< std::pair< size_t, std::string > > pascal::nextNonEmpty (const std::vector< std::string > &code, size_t start, size_t n)
static std::string pascal::invertJump (const std::string &j)
static bool pascal::parse2 (const std::string &line, const std::string &op, std::string &a, std::string &b)
static bool pascal::parse1 (const std::string &line, const std::string &op, std::string &a)
static bool pascal::parseJump (const std::string &line, std::string &jop, std::string &label)
static bool pascal::isLabelDef (const std::string &line, const std::string &label)
static void pascal::foldCmpTest (std::vector< std::string > &code)
static void pascal::foldAndTest (std::vector< std::string > &code)
static void pascal::foldOrTest (std::vector< std::string > &code)
static bool pascal::isRegisterName (const std::string &s)
 Forward declaration — checks whether a name is a hardware register.
static void pascal::copyPropagation (std::vector< std::string > &code)
 Copy-propagation peephole pass.
static void pascal::foldMovArithMov (std::vector< std::string > &code)
static void pascal::peepholeOpt (std::vector< std::string > &code)
std::string pascal::mxvmOpt (const std::string &text)

Detailed Description

Pascal-to-MXVM code generator — CodeGenVisitor visit methods and assembly output.

Author
Jared Bruni

Definition in file icode.cpp.