about summary refs log tree commit diff stats
path: root/subx/038---literal_strings.cc
diff options
context:
space:
mode:
authorKartik Agaram <vc@akkartik.com>2019-05-18 00:00:18 -0700
committerKartik Agaram <vc@akkartik.com>2019-05-18 00:45:12 -0700
commit83c67014034bbf9072d7e4555b0e51e815a95756 (patch)
treecf52127783efc20bbe8d903d96e73bc51a1f752d /subx/038---literal_strings.cc
parent4b506b630ce28b3574a9f903904588f92dd3a1c1 (diff)
downloadmu-83c67014034bbf9072d7e4555b0e51e815a95756.tar.gz
switch to new syntax for segment headers in C++
Diffstat (limited to 'subx/038---literal_strings.cc')
-rw-r--r--subx/038---literal_strings.cc15
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) {