mirror of
https://github.com/dobin/SuperMega
synced 2026-06-02 17:27:10 +00:00
refactor: all asm text parsing into asmparser.py
This commit is contained in:
+5
-4
@@ -3,7 +3,7 @@ from typing import List
|
||||
import unittest
|
||||
import logging
|
||||
|
||||
from phases.compiler import fixup_asm_file, fixup_iat_reuse
|
||||
from phases.asmparser import parse_asm_file
|
||||
from model.exehost import ExeHost
|
||||
from model.defs import *
|
||||
from model.carrier import Carrier
|
||||
@@ -18,9 +18,10 @@ class AsmTest(unittest.TestCase):
|
||||
def test_asm_fixup(self):
|
||||
path_in: FilePath = "tests/data/peb_walk_pre_fixup.asm"
|
||||
path_working: FilePath = "tests/data/peb_walk_pre_fixup.asm.test"
|
||||
carrier = Carrier()
|
||||
|
||||
shutil.copy(path_in, path_working)
|
||||
fixup_asm_file(path_working, 272)
|
||||
parse_asm_file(carrier, path_working)
|
||||
with open(path_working, "r") as f:
|
||||
lines = f.readlines()
|
||||
|
||||
@@ -35,7 +36,7 @@ class AsmTest(unittest.TestCase):
|
||||
self.assertTrue("supermega_payload" not in lines[198-1])
|
||||
|
||||
# shcstart:
|
||||
self.assertTrue("shcstart:" in lines[213-1])
|
||||
self.assertTrue("shcstart:" in lines[212-1])
|
||||
|
||||
os.remove(path_working)
|
||||
|
||||
@@ -46,7 +47,7 @@ class AsmTest(unittest.TestCase):
|
||||
shutil.copy(path_in, path_working)
|
||||
|
||||
carrier = Carrier()
|
||||
fixup_iat_reuse(path_working, carrier)
|
||||
parse_asm_file(carrier, path_working)
|
||||
|
||||
self.assertEqual(len(carrier.iat_requests), 2)
|
||||
|
||||
|
||||
+20
-14
@@ -5,7 +5,9 @@ import logging
|
||||
import os
|
||||
from model.defs import *
|
||||
from model.exehost import ExeHost
|
||||
from phases.datareuse import ReusedataAsmFileParser
|
||||
from model.carrier import Carrier
|
||||
from phases.asmparser import parse_asm_file
|
||||
|
||||
|
||||
class DataReuseTest(unittest.TestCase):
|
||||
def test_relocation_list(self):
|
||||
@@ -40,12 +42,12 @@ class DataReuseTest(unittest.TestCase):
|
||||
|
||||
def test_data_reuse_entries(self):
|
||||
asm_in = "tests/data/data_reuse_pre_fixup.asm"
|
||||
data_reuse_entries = []
|
||||
|
||||
asmFileParser = ReusedataAsmFileParser(asm_in)
|
||||
asmFileParser.init()
|
||||
asmFileParser.process()
|
||||
data_reuse_entries = asmFileParser.get_reusedata_fixups()
|
||||
asm_working = "tests/data/data_reuse_pre_fixup.asm.test"
|
||||
|
||||
shutil.copy(asm_in, asm_working)
|
||||
carrier = Carrier()
|
||||
parse_asm_file(carrier, asm_working)
|
||||
data_reuse_entries = carrier.get_all_reusedata_fixups()
|
||||
|
||||
self.assertEqual(2, len(data_reuse_entries))
|
||||
|
||||
@@ -59,16 +61,20 @@ class DataReuseTest(unittest.TestCase):
|
||||
entry = data_reuse_entries[1]
|
||||
self.assertTrue('$SG72514' in entry.string_ref)
|
||||
|
||||
os.remove(asm_working)
|
||||
|
||||
|
||||
def test_data_reuse_fixup(self):
|
||||
asm_in = "tests/data/data_reuse_pre_fixup.asm"
|
||||
asm_out = asm_in + ".test"
|
||||
asmFileParser = ReusedataAsmFileParser(asm_in)
|
||||
asmFileParser.init()
|
||||
asmFileParser.process()
|
||||
asmFileParser.write_lines_to(asm_out + ".test")
|
||||
with open(asm_out + ".test", "r") as f:
|
||||
asm_working = asm_in + ".test"
|
||||
|
||||
shutil.copy(asm_in, asm_working)
|
||||
carrier = Carrier()
|
||||
parse_asm_file(carrier, asm_working)
|
||||
|
||||
with open(asm_working, "r") as f:
|
||||
lines = f.readlines()
|
||||
self.assertTrue("\tDB " in lines[108-1])
|
||||
self.assertFalse("OFFSET FLAT:$SG" in lines[108-1])
|
||||
os.remove(asm_out + ".test")
|
||||
|
||||
os.remove(asm_working)
|
||||
|
||||
Reference in New Issue
Block a user