diff options
author | Kartik Agaram <github@akkartik.com> | 2019-05-18 00:46:19 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-05-18 00:46:19 -0700 |
commit | 11e725f277d08031d6b18599612a7bbddac050cd (patch) | |
tree | cf52127783efc20bbe8d903d96e73bc51a1f752d /subx/038---literal_strings.cc | |
parent | 72853d07bb3cfed09f57ee36b582f8f35fee74e4 (diff) | |
parent | 83c67014034bbf9072d7e4555b0e51e815a95756 (diff) | |
download | mu-11e725f277d08031d6b18599612a7bbddac050cd.tar.gz |
Merge pull request #33 from akkartik/new-segment-header
New syntax for segment headers
Diffstat (limited to 'subx/038---literal_strings.cc')
-rw-r--r-- | subx/038---literal_strings.cc | 15 |
1 files changed, 4 insertions, 11 deletions
diff --git a/subx/038---literal_strings.cc b/subx/038---literal_strings.cc index 9b2c3902..ecc80176 100644 --- a/subx/038---literal_strings.cc +++ b/subx/038---literal_strings.cc @@ -5,9 +5,9 @@ void test_transform_literal_string() { run( - "== code\n" + "== code 0x1\n" "b8/copy \"test\"/imm32\n" - "== data\n" // need to manually create the segment for now + "== data 0x2000\n" // need an empty segment ); CHECK_TRACE_CONTENTS( "transform: -- move literal strings to data segment\n" @@ -30,8 +30,8 @@ int Next_auto_global = 1; void transform_literal_strings(program& p) { trace(3, "transform") << "-- move literal strings to data segment" << end(); if (p.segments.empty()) return; - segment& code = p.segments.at(0); - segment data; + segment& code = *find(p, "code"); + segment& data = *find(p, "data"); for (int i = 0; i < SIZE(code.lines); ++i) { line& inst = code.lines.at(i); for (int j = 0; j < SIZE(inst.words); ++j) { @@ -45,13 +45,6 @@ void transform_literal_strings(program& p) { } trace(99, "transform") << "instruction after transform: '" << data_to_string(inst) << "'" << end(); } - if (data.lines.empty()) return; - if (SIZE(p.segments) < 2) { - p.segments.resize(2); - p.segments.at(1).lines.swap(data.lines); - } - vector<line>& existing_data = p.segments.at(1).lines; - existing_data.insert(existing_data.end(), data.lines.begin(), data.lines.end()); } void add_global_to_data_segment(const string& name, const word& value, segment& data) { |