OpenCores
URL https://opencores.org/ocsvn/klc32/klc32/trunk

Subversion Repositories klc32

[/] [klc32/] [trunk/] [software/] [klasm/] [klasm/] [klasm/] [Module1.vb] - Blame information for rev 11

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 11 robfinch
Imports System.IO
2
 
3
Module Module1
4
 
5
    Dim strs() As String
6
    Dim pass As Integer
7
    Dim lname As String
8
    Dim address As Int32
9
    Public ofs As System.IO.TextWriter
10
    Public lfs As System.IO.TextWriter
11
    Public labels As New Collection
12
    Public symbols As New Collection
13
    Dim iline As String
14
    Dim lnc As Integer
15
 
16
    Sub Main()
17
        Dim tr As TextReader
18
        Dim fn As String
19
        Dim args() As String
20
        Dim text As String
21
        Dim lines() As String
22
        Dim line As String
23
        Dim n As Integer
24
        Dim s As String
25
        Dim delimiters As String = " ," & vbTab
26
        Dim p() As Char = delimiters.ToCharArray()
27
 
28
        args = System.Environment.GetCommandLineArgs()
29
        lname = args(1)
30
        lname = lname.Replace(".s", ".lst")
31
        lname = lname.Replace(".asm", ".lst")
32
        tr = System.IO.File.OpenText(args(1))
33
        text = tr.ReadToEnd()
34
        tr.Close()
35
        text = text.Replace(vbCr, "")
36
        lines = text.Split(vbLf.ToCharArray)
37
        For pass = 1 To 2
38
            If pass = 2 Then
39
                ofs = System.IO.File.CreateText(args(2))
40
                lfs = System.IO.File.CreateText(lname)
41
            End If
42
            address = 0
43
            lnc = 0
44
            For Each iline In lines
45
                lnc = lnc + 1
46
                line = iline
47
                n = line.IndexOf(";")
48
                If n >= 0 Then
49
                    line = line.Substring(0, n - 1)
50
                End If
51
                line = line.Trim()
52
                line = CompressSpaces(line)
53
                line = line.Replace(", ", ",")
54
                If line.Length = 0 Then
55
                    emitEmptyLine(iline)    ' there could be comments on the line
56
                Else
57
                    strs = line.Split(p)
58
                    s = strs(0)
59
                    s = s.Trim()
60
                    If s.EndsWith(":") Then
61
                        ProcessLabel(s)
62
                    Else
63
                        ProcessOp(s)
64
                    End If
65
                End If
66
            Next
67
        Next
68
        ofs.Close()
69
        lfs.Close()
70
    End Sub
71
 
72
    Function CompressSpaces(ByVal s As String) As String
73
        Dim l As Integer
74
        Do
75
            l = s.Length
76
            s = s.Replace(vbTab, " ")
77
            s = s.Replace("  ", " ")
78
        Loop While s.Length <> l
79
        Return s
80
    End Function
81
 
82
    Sub ProcessTrap(ByVal n As Integer, ByVal m As Integer)
83
        Dim oc As Integer
84
        Dim Cra As Integer
85
 
86
        Cra = GetCrRegister(strs(1))
87
        oc = n << 26
88
        oc = oc Or (Cra << 21)
89
        oc = oc Or (m << 16)
90
        emit(oc)
91
    End Sub
92
 
93
    Sub ProcessSet(ByVal n As Integer, ByVal m As Integer)
94
        Dim oc As Integer
95
        Dim Cra As Integer
96
        Dim Rt As Integer
97
 
98
        Cra = GetCrRegister(strs(1))
99
        Rt = GetRegister(strs(2))
100
        oc = n << 26
101
        oc = oc Or (Cra << 21)
102
        oc = oc Or (m << 16)
103
        oc = oc Or (Rt << 11)
104
        emit(oc)
105
    End Sub
106
 
107
    Sub ProcessBranch(ByVal oc As Integer, ByVal func As Integer)
108
        Dim opcode As Integer
109
        Dim ra As Int64
110
        Dim rb As Int64
111
        Dim imm As Int64
112
        Dim disp As Int64
113
        Dim L As Label
114
        Dim P As LabelPatch
115
 
116
        ra = GetCrRegister(strs(1))
117
        strs(2) = strs(2).Trim
118
        Try
119
            L = labels.Item(strs(2))
120
        Catch
121
            L = Nothing
122
        End Try
123
        If L Is Nothing Then
124
            L = New Label
125
            L.name = strs(2)
126
            L.address = -1
127
            L.slot = -1
128
            L.defined = False
129
            labels.Add(L, L.name)
130
        End If
131
        If Not L.defined Then
132
            P = New LabelPatch
133
            P.type = "B"
134
            P.address = address
135
            L.PatchAddresses.Add(P)
136
        End If
137
        'If slot = 2 Then
138
        '    imm = ((L.address - address - 16) + (L.slot << 2)) >> 2
139
        'Else
140
        disp = L.address - (address + 4)
141
        'End If
142
        'imm = (L.address + (L.slot << 2)) >> 2
143
        opcode = oc << 26
144
        opcode = opcode Or (ra << 21)
145
        opcode = opcode Or (func << 16)
146
        opcode = opcode Or (disp And &HFFFF)
147
        emit(opcode)
148
    End Sub
149
 
150
    Sub ProcessRRop(ByVal n As Integer, ByVal m As Integer)
151
        Dim oc As Integer
152
        Dim Rt As Integer
153
        Dim Ra As Integer
154
        Dim Rb As Integer
155
 
156
        Rt = GetRegister(strs(1))
157
        Ra = GetRegister(strs(2))
158
        Rb = GetRegister(strs(3))
159
        oc = n << 26
160
        oc = oc Or Ra << 21
161
        oc = oc Or Rb << 16
162
        oc = oc Or Rt << 11
163
        oc = oc Or m
164
        emit(oc)
165
    End Sub
166
 
167
    Sub ProcessCmpOp(ByVal n As Integer, ByVal m As Integer)
168
        Dim oc As Integer
169
        Dim CRt As Integer
170
        Dim Ra As Integer
171
        Dim Rb As Integer
172
 
173
        CRt = GetCrRegister(strs(1))
174
        Ra = GetRegister(strs(2))
175
        Rb = GetRegister(strs(3))
176
        oc = n << 26
177
        oc = oc Or (Ra << 21)
178
        oc = oc Or (Rb << 16)
179
        oc = oc Or (CRt << 11)
180
        oc = oc Or m
181
        emit(oc)
182
    End Sub
183
 
184
    Sub ProcessCmpiOp(ByVal n As Integer)
185
        Dim oc As Integer
186
        Dim CRt As Integer
187
        Dim Ra As Integer
188
        Dim imm As Integer
189
 
190
        CRt = GetCrRegister(strs(1))
191
        Ra = GetRegister(strs(2))
192
        imm = GetImmediate(strs(3))
193
        oc = n << 26
194
        oc = oc Or (Ra << 21)
195
        oc = oc Or (CRt << 16)
196
        If imm < -32767 Or imm > 32767 Then
197
            oc = oc Or &H8000
198
            emit(oc)
199
            emit1(imm, True)
200
        Else
201
            oc = oc Or (imm And &HFFFF)
202
            emit(oc)
203
        End If
204
    End Sub
205
 
206
    Sub ProcessLdi(ByVal n As Integer)
207
        Dim oc As Integer
208
        Dim Rt As Integer
209
        Dim Ra As Integer
210
        Dim imm As Integer
211
 
212
        Rt = GetRegister(strs(1))
213
        Ra = 0
214
        imm = GetImmediate(strs(2))
215
        oc = n << 26
216
        oc = oc Or Ra << 21
217
        oc = oc Or Rt << 16
218
        If imm < -32767 Or imm > 32767 Then
219
            oc = oc Or &H8000
220
            emit(oc)
221
            emit1(imm, True)
222
        Else
223
            oc = oc Or (imm And &HFFFF)
224
            emit(oc)
225
        End If
226
    End Sub
227
 
228
    Sub ProcessOri(ByVal n As Integer)
229
        Dim oc As Integer
230
        Dim Rt As Integer
231
        Dim Ra As Integer
232
        Dim imm As Integer
233
 
234
        Rt = GetRegister(strs(1))
235
        Ra = GetRegister(strs(2))
236
        imm = GetImmediate(strs(3))
237
        oc = n << 26
238
        oc = oc Or Ra << 21
239
        oc = oc Or Rt << 16
240
        If imm < -32767 Or imm > 32767 Then
241
            oc = oc Or &H8000
242
            emit(oc)
243
            emit1(imm, True)
244
        Else
245
            oc = oc Or (imm And &HFFFF)
246
            emit(oc)
247
        End If
248
    End Sub
249
 
250
    Sub ParseAm(ByRef offset As Integer, ByRef reg1 As Integer, ByRef reg2 As Integer)
251
        Dim s() As String
252
        Dim t() As String
253
 
254
        offset = 0
255
        reg1 = 0
256
        reg2 = 0
257
        s = strs(2).Split("(".ToCharArray)
258
        If s(0).Length > 0 Then
259
            offset = GetImmediate(s(0))
260
        Else
261
            offset = 0
262
        End If
263
        If s.Length > 1 Then
264
            s(1) = s(1).TrimEnd(")".ToCharArray)
265
            t = s(1).Split("+".ToCharArray)
266
            reg1 = GetRegister(t(0))
267
            If t.Length = 2 Then
268
                reg2 = GetRegister(t(1))
269
            Else
270
                reg2 = 0
271
            End If
272
        End If
273
    End Sub
274
 
275
    Sub ProcessLabel(ByVal s As String)
276
        Dim L As Label
277
        Dim M As Label
278
 
279
        s = s.TrimEnd(":")
280
        L = New Label
281
        L.name = s
282
        L.address = address
283
        L.defined = True
284
        If labels.Count > 0 Then
285
            Try
286
                M = labels.Item(s)
287
            Catch
288
                M = Nothing
289
            End Try
290
        Else
291
            M = Nothing
292
        End If
293
        If M Is Nothing Then
294
            labels.Add(L, L.name)
295
        Else
296
            M.defined = True
297
            M.address = L.address
298
            M.slot = L.slot
299
        End If
300
        emitLabel(L.name)
301
    End Sub
302
 
303
 
304
    Sub ProcessEquate()
305
        Dim sym As Symbol
306
        Dim sym2 As Symbol
307
 
308
        If strs(1).ToUpper = "EQU" Then
309
            sym = New Symbol
310
            sym.name = strs(0)
311
            sym.value = GetImmediate(strs(2))
312
            If symbols Is Nothing Then
313
                symbols = New Collection
314
            Else
315
                Try
316
                    sym2 = symbols.Item(sym.name)
317
                Catch
318
                    sym2 = Nothing
319
                End Try
320
            End If
321
            If sym2 Is Nothing Then
322
                symbols.Add(sym, sym.name)
323
            End If
324
            emitEmptyLine(iline)
325
        End If
326
    End Sub
327
 
328
    Sub ProcessOrg()
329
        Dim imm As Int32
330
        imm = GetImmediate(strs(1))
331
        address = imm
332
        emitLabel("")
333
    End Sub
334
 
335
    Sub ProcessPush(ByVal n As Integer)
336
        Dim oc As Integer
337
        Dim rs() As String
338
        Dim regs(5) As Integer
339
        Dim c As Integer
340
 
341
        rs = strs(1).Split("/".ToCharArray)
342
        For c = 1 To 5
343
            If rs.Length < c Then
344
                regs(c - 1) = 0
345
            Else
346
                regs(c - 1) = GetRegister(rs(c - 1))
347
            End If
348
        Next
349
        oc = n << 26
350
        oc = oc Or regs(0) << 21
351
        oc = oc Or regs(1) << 16
352
        oc = oc Or regs(2) << 11
353
        oc = oc Or regs(3) << 6
354
        oc = oc Or regs(4) << 1
355
        emit(oc)
356
    End Sub
357
 
358
    Sub ProcessJsr(ByVal n As Integer)
359
        Dim oc As Integer
360
        Dim adr As Integer
361
 
362
        adr = GetImmediate(strs(1))
363
        oc = n << 26
364
        oc = oc Or (adr And &H3FFFFFF)
365
        emit(oc)
366
    End Sub
367
 
368
    Sub ProcessMemop(ByVal n As Integer, ByVal m As Integer)
369
        Dim oc As Integer
370
        Dim Ra As Integer
371
        Dim Rb As Integer
372
        Dim Rt As Integer
373
        Dim offs As Integer
374
 
375
        Rt = GetRegister(strs(1))
376
        ParseAm(offs, Ra, Rb)
377
        If Ra <> 0 And Rb <> 0 Then
378
            oc = n << 26
379
            oc = oc Or (Ra << 21)
380
            oc = oc Or (Rb << 16)
381
            oc = oc Or m
382
            emit(oc)
383
        Else
384
            oc = n << 26
385
            oc = oc Or (Ra << 21)
386
            oc = oc Or (Rt << 16)
387
            If offs < -32767 Or offs > 32767 Then
388
                oc = oc Or &H8000
389
                emit(oc)
390
                emit1(offs, True)
391
            Else
392
                oc = oc Or (offs And &HFFFF)
393
                emit(oc)
394
            End If
395
        End If
396
    End Sub
397
 
398
    Sub ProcessLink(ByVal n As Integer)
399
        Dim oc As Integer
400
        Dim Ra As Integer
401
        Dim imm As Integer
402
 
403
        Ra = GetRegister(strs(1))
404
        imm = GetImmediate(strs(2))
405
        oc = n << 26
406
        oc = oc Or (Ra << 21)
407
        oc = oc Or (Ra << 16)
408
        oc = oc Or (imm And &HFFFF)
409
        emit(oc)
410
    End Sub
411
 
412
    Sub ProcessUnlk(ByVal n As Integer, ByVal m As Integer)
413
        Dim oc As Integer
414
        Dim Ra As Integer
415
 
416
        Ra = GetRegister(strs(1))
417
        oc = n << 26
418
        oc = oc Or m
419
        oc = oc Or (Ra << 21)
420
        oc = oc Or (Ra << 16)
421
        emit(oc)
422
    End Sub
423
 
424
    Sub ProcessRts(ByVal n As Integer, ByVal m As Integer)
425
        Dim oc As Integer
426
        Dim offs As Integer
427
        Dim imm As Integer
428
        Dim k As Integer
429
 
430
        k = 1
431
        offs = 0
432
        imm = 0
433
        If strs.Length = 2 Then
434
            offs = GetImmediate(strs(1))
435
            k = k + 1
436
        End If
437
        If strs.Length > 1 Then
438
            imm = GetImmediate(strs(k))
439
        End If
440
        oc = n << 26
441
        oc = oc Or m
442
        oc = oc Or (offs << 22)
443
        oc = oc Or ((imm And &HFFFF) << 6)
444
        emit(oc)
445
    End Sub
446
 
447
    Sub ProcessStop(ByVal n As Integer, ByVal m As Integer)
448
        Dim oc As Integer
449
 
450
        oc = n << 26
451
        oc = n Or m
452
        emit(oc)
453
    End Sub
454
 
455
    Sub ProcessOp(ByVal s As String)
456
        Select Case (s.ToLower)
457
            Case "org"
458
                ProcessOrg()
459
            Case "add"
460
                ProcessRRop(2, 4)
461
            Case "sub"
462
                ProcessRRop(2, 5)
463
            Case "cmp"
464
                ProcessCmpOp(2, 6)
465
            Case "and"
466
                ProcessRRop(2, 8)
467
            Case "or"
468
                ProcessRRop(2, 9)
469
            Case "eor"
470
                ProcessRRop(2, 10)
471
            Case "nand"
472
                ProcessRRop(2, 12)
473
            Case "nor"
474
                ProcessRRop(2, 13)
475
            Case "enor"
476
                ProcessRRop(2, 14)
477
            Case "shl"
478
                ProcessRRop(2, 16)
479
            Case "shr"
480
                ProcessRRop(2, 17)
481
            Case "rol"
482
                ProcessRRop(2, 18)
483
            Case "ror"
484
                ProcessRRop(2, 19)
485
            Case "ldi"
486
                ProcessLdi(9)
487
            Case "addi"
488
                ProcessOri(4)
489
            Case "subi"
490
                ProcessOri(5)
491
            Case "cmpi"
492
                ProcessCmpiOp(6)
493
            Case "andi"
494
                ProcessOri(8)
495
            Case "ori"
496
                ProcessOri(9)
497
            Case "eori"
498
                ProcessOri(10)
499
            Case "bra"
500
                ProcessBranch(16, 0)
501
            Case "bhi"
502
                ProcessBranch(16, 2)
503
            Case "bls"
504
                ProcessBranch(16, 3)
505
            Case "bhs"
506
                ProcessBranch(16, 4)
507
            Case "blo"
508
                ProcessBranch(16, 5)
509
            Case "bne"
510
                ProcessBranch(16, 6)
511
            Case "beq"
512
                ProcessBranch(16, 7)
513
            Case "bvc"
514
                ProcessBranch(16, 8)
515
            Case "bvs"
516
                ProcessBranch(16, 9)
517
            Case "bpl"
518
                ProcessBranch(16, 10)
519
            Case "bmi"
520
                ProcessBranch(16, 11)
521
            Case "bge"
522
                ProcessBranch(16, 12)
523
            Case "blt"
524
                ProcessBranch(16, 13)
525
            Case "bgt"
526
                ProcessBranch(16, 14)
527
            Case "ble"
528
                ProcessBranch(16, 15)
529
            Case "trap"
530
                ProcessTrap(17, 0)
531
            Case "thi"
532
                ProcessTrap(17, 2)
533
            Case "tls"
534
                ProcessTrap(17, 3)
535
            Case "ths"
536
                ProcessTrap(17, 4)
537
            Case "tlo"
538
                ProcessTrap(17, 5)
539
            Case "tne"
540
                ProcessTrap(17, 6)
541
            Case "teq"
542
                ProcessTrap(17, 7)
543
            Case "tvc"
544
                ProcessTrap(17, 8)
545
            Case "tvs"
546
                ProcessTrap(17, 9)
547
            Case "tpl"
548
                ProcessTrap(17, 10)
549
            Case "tmi"
550
                ProcessTrap(17, 11)
551
            Case "tge"
552
                ProcessTrap(17, 12)
553
            Case "tlt"
554
                ProcessTrap(17, 13)
555
            Case "tgt"
556
                ProcessTrap(17, 14)
557
            Case "tle"
558
                ProcessTrap(17, 15)
559
            Case "set"
560
                ProcessSet(18, 0)
561
            Case "shi"
562
                ProcessSet(18, 2)
563
            Case "sls"
564
                ProcessSet(18, 3)
565
            Case "shs"
566
                ProcessSet(18, 4)
567
            Case "slo"
568
                ProcessSet(18, 5)
569
            Case "sne"
570
                ProcessSet(18, 6)
571
            Case "seq"
572
                ProcessSet(18, 7)
573
            Case "svc"
574
                ProcessSet(18, 8)
575
            Case "svs"
576
                ProcessSet(18, 9)
577
            Case "spl"
578
                ProcessSet(18, 10)
579
            Case "smi"
580
                ProcessSet(18, 11)
581
            Case "sge"
582
                ProcessSet(18, 12)
583
            Case "slt"
584
                ProcessSet(18, 13)
585
            Case "sgt"
586
                ProcessSet(18, 14)
587
            Case "sle"
588
                ProcessSet(18, 15)
589
            Case "sw"
590
                ProcessMemop(56, 0)
591
            Case "sh"
592
                ProcessMemop(57, 0)
593
            Case "sb"
594
                ProcessMemop(58, 0)
595
            Case "lw"
596
                ProcessMemop(48, 0)
597
            Case "lh"
598
                ProcessMemop(49, 0)
599
            Case "lb"
600
                ProcessMemop(50, 0)
601
            Case "lhu"
602
                ProcessMemop(51, 0)
603
            Case "lbu"
604
                ProcessMemop(52, 0)
605
            Case "tas"
606
                ProcessMemop(46, 0)
607
            Case "swx"
608
                ProcessMemop(2, 56)
609
            Case "shx"
610
                ProcessMemop(2, 57)
611
            Case "sbx"
612
                ProcessMemop(2, 58)
613
            Case "lwx"
614
                ProcessMemop(2, 48)
615
            Case "lhx"
616
                ProcessMemop(2, 49)
617
            Case "lbx"
618
                ProcessMemop(2, 50)
619
            Case "lhux"
620
                ProcessMemop(2, 51)
621
            Case "lbux"
622
                ProcessMemop(2, 52)
623
            Case "jsr"
624
                ProcessJsr(21)
625
            Case "push"
626
                ProcessPush(59)
627
            Case "pop"
628
                ProcessPush(53)
629
            Case "link"
630
                ProcessLink(54)
631
            Case "unlk"
632
                ProcessUnlk(1, 24)
633
            Case "rts"
634
                ProcessRts(0, 34)
635
            Case "stop"
636
                ProcessStop(0, 53)
637
            Case Else
638
                ProcessEquate()
639
        End Select
640
    End Sub
641
 
642
    Sub emitEmptyLine(ByVal ln As String)
643
        Dim s As String
644
        If pass = 2 Then
645
            s = "                " & "  " & vbTab & "           " & vbTab & vbTab & ln
646
            lfs.WriteLine(s)
647
        End If
648
    End Sub
649
 
650
    Sub emitLabel(ByVal lbl As String)
651
        Dim s As String
652
 
653
        If pass = 2 Then
654
            s = Hex(address).PadLeft(8, "0") & vbTab & "           " & vbTab & vbTab & iline
655
            lfs.WriteLine(s)
656
        End If
657
    End Sub
658
 
659
    Function GetRegister(ByVal s As String) As Integer
660
        Dim r As Int16
661
        If s.StartsWith("R") Or s.StartsWith("r") Then
662
            s = s.TrimStart("Rr".ToCharArray)
663
            Try
664
                r = Int16.Parse(s)
665
            Catch
666
                r = -1
667
            End Try
668
            Return r
669
        Else
670
            Return -1
671
        End If
672
    End Function
673
 
674
    Function GetCrRegister(ByVal s As String) As Integer
675
        Dim r As Int16
676
        If s.ToLower.StartsWith("cr") Then
677
            s = s.Substring(2)
678
            Try
679
                r = Int16.Parse(s)
680
            Catch
681
                r = -1
682
            End Try
683
            Return r
684
        Else
685
            Return -1
686
        End If
687
    End Function
688
 
689
    Function GetImmediate(ByVal s As String) As Int64
690
        Dim s1 As String
691
        Dim s2 As String
692
        Dim s3 As String
693
        Dim n As Int64
694
        Dim q As Integer
695
        Dim sym As Symbol
696
        Dim L As Label
697
 
698
        s = s.TrimStart("#".ToCharArray)
699
        s = s.Replace("_", "")
700
        If s.Length = 0 Then Return 0
701
        If s.Chars(0) = "$" Then
702
            s1 = "&H" & s.Substring(1)
703
            n = Val(s1)
704
        ElseIf s.Chars(0) = "0" Then
705
            If s.Length = 1 Then Return 0
706
            If s.Chars(1) = "x" Or s.Chars(1) = "X" Then
707
                If s.Length >= 18 Then
708
                    s1 = "&H0000" & s.Substring(2, 6) & "&"
709
                    s2 = "&H0000" & s.Substring(8, 6) & "&"
710
                    s3 = "&H0000" & s.Substring(14) & "&"
711
                    n = Val(s1) << 40
712
                    n = n Or (Val(s2) << 16)
713
                    n = n Or Val(s3)
714
                Else
715
                    s1 = "&H" & s.Substring(2)
716
                    n = Val(s1)
717
                End If
718
            End If
719
        Else
720
            If s.Chars(0) > "9" Then
721
                sym = Nothing
722
                Try
723
                    sym = symbols.Item(s)
724
                Catch
725
                    sym = Nothing
726
                End Try
727
                If Not sym Is Nothing Then
728
                    n = sym.value
729
                    Return n
730
                End If
731
                Try
732
                    L = labels.Item(s)
733
                Catch ex As Exception
734
                    L = Nothing
735
                End Try
736
                If Not L Is Nothing Then
737
                    n = L.address
738
                    Return n
739
                End If
740
            End If
741
            n = Int64.Parse(s)
742
        End If
743
        Return n
744
    End Function
745
 
746
    Overloads Sub emit(ByVal n As Int32)
747
        emit1(n, False)
748
    End Sub
749
 
750
    Sub emit1(ByVal n As Int32, ByVal pfx As Boolean)
751
        Dim wdhi As Int64
752
        Dim wdlo As Int64
753
        Dim s As String
754
 
755
        If pass = 2 Then
756
            If pfx Then
757
                s = Hex(address).PadLeft(8, "0") & vbTab & Hex(n).PadLeft(8, "0") & vbTab
758
            Else
759
                s = Hex(address).PadLeft(8, "0") & vbTab & Hex(n).PadLeft(8, "0") & vbTab & vbTab & iline
760
            End If
761
            lfs.WriteLine(s)
762
        End If
763
        If pass = 2 Then
764
            s = "32'h" & Hex(address) & ":" & vbTab & "romout <= 32'h" & Hex(n).PadLeft(8, "0") & ";"
765
            ofs.WriteLine(s)
766
        End If
767
        address = address + 4
768
 
769
    End Sub
770
 
771
End Module

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.