Page 30 of 39

Re: Prog8 language and compiler topic

Posted: Sat Jul 22, 2023 10:09 pm
by ahenry3068
Thank you.. That is useful...

Re: Prog8 language and compiler topic

Posted: Sun Jul 23, 2023 10:16 am
by yock1960
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

Re: Prog8 language and compiler topic

Posted: Sun Jul 23, 2023 10:47 am
by desertfish
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

Posted: Sun Jul 23, 2023 2:26 pm
by yock1960
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.
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.

; 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

Posted: Sun Jul 23, 2023 3:09 pm
by yock1960
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

Posted: Sun Jul 23, 2023 3:24 pm
by yock1960
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...
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! :lol: I guess I'll wait on your fix....I'll make a temporary change so that I can continue testing!

Re: Prog8 language and compiler topic

Posted: Sun Jul 23, 2023 8:36 pm
by desertfish
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.

Re: Prog8 language and compiler topic

Posted: Thu Jul 27, 2023 7:15 pm
by yock1960
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.
Holy Cow! You programming gurus are amazing! :lol:

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! :lol: 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! :roll: 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... :o

prog8 version 9.2.1 released

Posted: Fri Jul 28, 2023 12:05 am
by desertfish
:!: Prog8 version 9.2.1 has been released: https://github.com/irmen/prog8/releases/tag/v9.2.1

Help me test the upcoming 9.3 version

Posted: Mon Jul 31, 2023 9:35 pm
by desertfish
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!