Prog8 language and compiler topic
- ahenry3068
- Posts: 1136
- Joined: Tue Apr 04, 2023 9:57 pm
Re: Prog8 language and compiler topic
Thank you.. That is useful...
Re: Prog8 language and compiler topic
More head scratching!
I wrote a 'ghetto' assembler to use with my current project....a simulator for...oh hell, just see:
https://www.youtube.com/watch?v=y149hLe ... AQONTKxql3
Anyway, the assembler works fine....by itself, but when I add the code to the simulator, in it's own block, I keep getting:
undefined symbol: prog8_interned_strings.string_24
error. This is the string variable:
str[] addrs = ["i0","i1","i2","i3","i4","i5","i6","i7","o0","o1","o2","o3","o4","o5","o6","o7","s0","s1","s2","s3","s4","s5","s6","rr"]
I moved it from the separate code block to main, I've renamed it, I'm down to, 'I must have used up the space allotted for strings' or something.
Help! Using v9.01
I wrote a 'ghetto' assembler to use with my current project....a simulator for...oh hell, just see:
https://www.youtube.com/watch?v=y149hLe ... AQONTKxql3
Anyway, the assembler works fine....by itself, but when I add the code to the simulator, in it's own block, I keep getting:
undefined symbol: prog8_interned_strings.string_24
error. This is the string variable:
str[] addrs = ["i0","i1","i2","i3","i4","i5","i6","i7","o0","o1","o2","o3","o4","o5","o6","o7","s0","s1","s2","s3","s4","s5","s6","rr"]
I moved it from the separate code block to main, I've renamed it, I'm down to, 'I must have used up the space allotted for strings' or something.
Help! Using v9.01
- desertfish
- Posts: 1096
- Joined: Tue Aug 25, 2020 8:27 pm
- Location: Netherlands
Re: Prog8 language and compiler topic
Whoops, that is a bug in the compiler. Will need to see the piece of code more fully that causes this error.
Re: Prog8 language and compiler topic
Here ya go. String declarations and code. I've marked the offending line with some asterisks. As I said, this code works fine in a standalone program, but when I tacked it to the 'main' program, it fails. Originally the declarations were in the same block as the assembler, but I moved them up to main...it makes no difference. The arguments of the sub are strings that I'm trying to match in the string arrays.desertfish wrote: ↑Sun Jul 23, 2023 10:47 am Whoops, that is a bug in the compiler. Will need to see the piece of code more fully that causes this error.
; mc14500b opcode mnemonics and byte codes
str[] insts = ["nopo","ld","ldc","and","andc","or","orc","xnor","sto","stoc","ien","oen","jmp","rtn","skz","nopf"]
ubyte[] instv = [0,16,32,48,64,80,96,112,128,144,160,176,192,208,224,240]
; mc14500b minimal system simulator input, output, scratchpad and result register mnemonics and byte code
str[] addrs = ["i0","i1","i2","i3","i4","i5","i6","i7","o0","o1","o2","o3","o4","o5","o6","o7","s0","s1","s2","s3","s4","s5","s6","rr"]
ubyte[] addrc = [0,1,2,3,4,5,6,7,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]
sub translate(uword instr, uword data) { ubyte x byte res dbyte = 0 for x in 0 to 15 { res = string.compare(instr,main.insts[x]) if res == 0 { dbyte = dbyte + main.instv[x] } } for x in 0 to 23 { res = string.compare(data,main.addrs[x]) ***** if res == 0 { dbyte = dbyte + main.addrc[x] } } main.ram[main.address] = dbyte main.address += 1 } }
Re: Prog8 language and compiler topic
I found the problem. The last string in the addrs string array is "rr", I also have a boolean variable called rr in the 'main' program. Once I renamed one, it compiled. An easy fix...if I'd paid closer attention to the error message I'd have caught it sooner...
Re: Prog8 language and compiler topic
Okay, you'll probably know/learn this. It compiled after I changed the array string from 'rr' to something different. I want that string to be 'rr'! Prog8 doesn't want it however! I guess I'll wait on your fix....I'll make a temporary change so that I can continue testing!yock1960 wrote: ↑Sun Jul 23, 2023 3:09 pm I found the problem. The last string in the addrs string array is "rr", I also have a boolean variable called rr in the 'main' program. Once I renamed one, it compiled. An easy fix...if I'd paid closer attention to the error message I'd have caught it sooner...
- desertfish
- Posts: 1096
- Joined: Tue Aug 25, 2020 8:27 pm
- Location: Netherlands
Re: Prog8 language and compiler topic
Can't reproduce the error. You'll need to post more code , part or all of the main program as well , that I can compile to trigger the error.
I've pasted your snippet in a main program myself, added some variables, and it compiled just fine.
I've pasted your snippet in a main program myself, added some variables, and it compiled just fine.
Re: Prog8 language and compiler topic
Holy Cow! You programming gurus are amazing!desertfish wrote: ↑Sun Jul 23, 2023 8:36 pm Can't reproduce the error. You'll need to post more code , part or all of the main program as well , that I can compile to trigger the error.
I've pasted your snippet in a main program myself, added some variables, and it compiled just fine.
I decided to 'improve' my assembler to make this problem irrelevant! An even chance it's my error to begin with....anyway, I am improving it...but it's one step forward, 2 steps back! Every time I get it 'fixed' and then throw another source file at it, that's different in some way....it's broken again! Of course, it's a different section of the code that is at fault and then there's the things that you thought were working, but it was just dumb luck that they were! The most fun however, was when I spent...??? hours trying to fix my code, when the code was fine....it was an error in the file being assembled! That was when I decided that another improvement....some error checking, was required. All of this, before any potential 'user' starts doing totally unexpected things...
- desertfish
- Posts: 1096
- Joined: Tue Aug 25, 2020 8:27 pm
- Location: Netherlands
prog8 version 9.2.1 released
Prog8 version 9.2.1 has been released: https://github.com/irmen/prog8/releases/tag/v9.2.1
- desertfish
- Posts: 1096
- Joined: Tue Aug 25, 2020 8:27 pm
- Location: Netherlands
Help me test the upcoming 9.3 version
Note: the current development version of prog8 (which will become 9.3) has an important change in the code generator.
The software stack that was used to translate complex (nested) expressions, has been removed.
Although all my own programs and several from other people have been compiled successfully already, this is a rather big change and may still result in problems for the more obscure cases.
If you'd like to help me out and help test/debug this new code generator change, please use the development build in place of the official 9.2.1 release. You can find it on github https://github.com/irmen/prog8/actions? ... h%3Amaster
(choose the most recent CI build and download the build artifact zipfile). Thanks!
The software stack that was used to translate complex (nested) expressions, has been removed.
Although all my own programs and several from other people have been compiled successfully already, this is a rather big change and may still result in problems for the more obscure cases.
If you'd like to help me out and help test/debug this new code generator change, please use the development build in place of the official 9.2.1 release. You can find it on github https://github.com/irmen/prog8/actions? ... h%3Amaster
(choose the most recent CI build and download the build artifact zipfile). Thanks!