mirror of
https://github.com/KrisKennaway/ii-vision.git
synced 2024-12-30 15:29:26 +00:00
c139e8bf1b
Add explicit end_{opcode} labels to mark (1 byte past) end of opcode. Rename op_done to op_terminate to match opcode name in encoder. Extract symbol table in encoder and use this to populate the opcode start/end addresses.
32 lines
1.0 KiB
Python
32 lines
1.0 KiB
Python
import io
|
|
import unittest
|
|
|
|
import symbol_table
|
|
|
|
DEBUG_FILE = """
|
|
version major=2,minor=0
|
|
info csym=0,file=594,lib=1,line=420,mod=2,scope=2,seg=7,span=255,sym=151,type=5
|
|
file id=0,name="main.s",size=10297,mtime=0x5C766D92,mod=0
|
|
file id=1,name="/usr/local/share/cc65/asminc/apple2.inc",size=2348,mtime=0x5AA06221,mod=0
|
|
file id=2,name="apple2/exehdr.s",size=1848,mtime=0x5AA06221,mod=1
|
|
lib id=0,name="/usr/local/share/cc65/lib/apple2enh.lib"
|
|
line id=0,file=1,line=60
|
|
[...]
|
|
sym id=8,name="op_ack",addrsize=absolute,scope=1,def=195,val=0x81FA,type=lab
|
|
sym id=10,name="op_tick",addrsize=absolute,scope=1,def=6,val=0x81EE,type=lab
|
|
sym id=12,name="rle1",addrsize=absolute,scope=1,def=135,ref=373,val=0x81D6,type=lab
|
|
[...]
|
|
"""
|
|
|
|
|
|
class TestSymbolTable(unittest.TestCase):
|
|
def test_parse(self):
|
|
dbg = io.StringIO(DEBUG_FILE)
|
|
s = symbol_table.SymbolTable()
|
|
self.assertEqual({"\"op_ack\"", "\"op_tick\"", "\"rle1\""},
|
|
s.parse(dbg).keys())
|
|
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main()
|