File tree Expand file tree Collapse file tree 2 files changed +21
-3
lines changed Expand file tree Collapse file tree 2 files changed +21
-3
lines changed Original file line number Diff line number Diff line change 1
1
import sys
2
2
3
3
from .assemble import Assembler
4
+ from .link import make_binary
5
+
6
+
7
+ def src_to_binary (lines ):
8
+ assembler = Assembler ()
9
+ assembler .assemble (lines )
10
+ assembler .dump ()
11
+ text , data , bss_len = assembler .fetch ()
12
+ return make_binary (text , data , bss_len )
4
13
5
14
6
15
def main (fn ):
7
16
with open (fn ) as f :
8
17
lines = f .readlines ()
9
18
10
- assembler = Assembler ()
11
- assembler .assemble (lines )
12
- assembler .dump ()
19
+ binary = src_to_binary (lines )
20
+
21
+ if fn .endswith ('.s' ) or fn .endswith ('.S' ):
22
+ fn = fn [:- 2 ]
23
+ with open (fn + '.ulp' , 'wb' ) as f :
24
+ f .write (binary )
13
25
14
26
15
27
main (sys .argv [1 ])
Original file line number Diff line number Diff line change @@ -78,6 +78,12 @@ def dump(self):
78
78
print ("%s section:" % BSS )
79
79
print ("size: %d" % self .offsets [BSS ])
80
80
81
+ def fetch (self ):
82
+ def get_bytes (section ):
83
+ return b'' .join (self .sections [section ])
84
+
85
+ return get_bytes (TEXT ), get_bytes (DATA ), self .offsets [BSS ]
86
+
81
87
def d_text (self ):
82
88
self .section = TEXT
83
89
You can’t perform that action at this time.
0 commit comments