diff options
author | Kartik Agaram <vc@akkartik.com> | 2018-09-23 11:17:11 -0700 |
---|---|---|
committer | Kartik Agaram <vc@akkartik.com> | 2018-09-23 11:17:11 -0700 |
commit | d48cfd0f36e21f6515285157b785a302932ed675 (patch) | |
tree | d965b4a82c18f1c8d70c42594d1639ebaf5e6a4f /subx/035labels.cc | |
parent | aa00959024643a33f766ef3f060a934006fe7725 (diff) | |
download | mu-d48cfd0f36e21f6515285157b785a302932ed675.tar.gz |
4505
Extract a helper from the factorial unit test: check_ints_equal. Start of a vocabulary for unit tests. I *could* also start thinking of supporting multi-file programs, but I'm going to resist the temptation for now. Copy helpers as necessary, and allow them to mutate and diverge for a while before we pummel them into a Procrustean "standard library". Extracting a body of shared code immediately starts to discourage innovation in the shared code.
Diffstat (limited to 'subx/035labels.cc')
-rw-r--r-- | subx/035labels.cc | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/subx/035labels.cc b/subx/035labels.cc index fc2ccd8c..207b09b1 100644 --- a/subx/035labels.cc +++ b/subx/035labels.cc @@ -89,6 +89,8 @@ void compute_byte_indices_for_labels(const segment& code, map<string, int32_t>& raise << "'" << to_string(inst) << "': label definition (':') not allowed in operand\n" << end(); if (j > 0) raise << "'" << to_string(inst) << "': labels can only be the first word in a line.\n" << end(); + if (Dump_map) + cerr << "0x" << HEXWORD << (code.start + current_byte) << ' ' << label << '\n'; put(byte_index, label, current_byte); trace(99, "transform") << "label '" << label << "' is at address " << (current_byte+code.start) << end(); // no modifying current_byte; label definitions won't be in the final binary @@ -97,6 +99,14 @@ void compute_byte_indices_for_labels(const segment& code, map<string, int32_t>& } } +:(before "End Globals") +bool Dump_map = false; // currently used only by 'subx translate' +:(before "End Commandline Options") +else if (is_equal(*arg, "--map")) { + Dump_map = true; +} + +:(code) void drop_labels(segment& code) { for (int i = 0; i < SIZE(code.lines); ++i) { line& inst = code.lines.at(i); |