jmg,
We don't need the compiler to be that intelligent. There will not be that many to use this kind of code, and those that do should be smart enough to work it out. There are far more important things to add to the compiler first!!!
Did you mean to say 'the assembler' ?
Technically while pnut is currently only an assembler, on P1 there are no assemblers, only compilers, even tho we are assembling. Who cares
It's not really 'intelligence' to read down a column vertically, if that is what you meant ?.
The user provides all the intelligence there, the Assembler just spins what they wrote 90', to create the masks.
It is still resources to put that into the compiler/assembler. Those resources (probably Roy) would be better spent adding other much more deserving features that will be much more useful.
gas of course is an assembler so there is at least one. I also wrote a trivial PASM assembler a while back while I was adding inline assembly language to my basic interpreter.
Technically, Chips "compiler" code (and thus OpenSpin as well) is an assembler and a bytecode generator (not a compiler). Compiling is usually reserved to mean compiling a higher level language to a native machine code (asm).
They generate byte code for the interpreter in ROM, and they assemble dat sections into pasm.
propgcc is a compiler, catalina is a compiler.
Of course, lots of people toss the word compiler around meaning anything that processes a high level language into something else... so yeah.
Chip's compiler, as in the PropTool, and OpenSpin are very definitely compilers. They take a high level language, Spin, and compile to a byte code as output.
Just happens that Spin includes the PASM syntax, so these tools also assemble that it native instructions.
As far as I know neither of them can take only PASM source as input. There always has to be a bit of Spin wrapped around it. Biffle's propasm had no need for any Spin in the source code.
Yeah, "compiler" is bandied around loosely. There are those who don't seem to be able to tell the difference between a "language", a "compiler", an "IDE", etc.
... back to Cluso's primary point: there are more important features that need to be addressed before spending time on smarts for generating SKIPF blocks.
It kind of congealed in my head yesterday that with XBYTE, an interpreter can be built that pushes the absolute limits of the instruction set.
I mean, because of the SKIPF patterning of PASM code via XBYTE, it is practical to have the interpreter execute ONLY needed PASM instructions. No cycles/instructions need to get wasted sub-decoding bytecodes. It can be pure taking-care-of-business. And XBYTE reads and dispatches bytecodes with a mere 6-clock overhead.
In Spin on the Prop1, tons of instructions were needed in the interpreter just to get to the PASM instructions of interest, all along the way. Now, all that interstitial monkey motion is gone, and we even have _RET_ in the last instruction of a bytecode snippet to immediately retrigger XBYTE.
It kind of congealed in my head yesterday that with XBYTE, an interpreter can be built that pushes the absolute limits of the instruction set.
I mean, because of the SKIPF patterning of PASM code via XBYTE, it is practical to have the interpreter execute ONLY needed PASM instructions. No cycles/instructions need to get wasted sub-decoding bytecodes. It can be pure taking-care-of-business. And XBYTE reads and dispatches bytecodes with a mere 6-clock overhead.
In Spin on the Prop1, tons of instructions were needed in the interpreter just to get to the PASM instructions of interest, all along the way. Now, all that interstitial monkey motion is gone, and we even have _RET_ in the last instruction of a bytecode snippet to immediately retrigger XBYTE.
Sounds like it should result in a really speedy VM!
..unless people make provisions for their own end, that is what happens.
So what should one do?
Should I sit down with my lawyer and draft a last will and testament such that he can announce by demise on all forums on which I have a presence?
That would mean including my user name an password to every place in my will.
Has anybody ever done that?
And what if I want to leave all my electronics test gear and components, humble as they are, to interested members of the Parallax forum?
How does one draft that?
As it stands, when I breath my last everything will go in the trash because nobody knows what it is.
From the crowd apart, wandering,
almost unnoticed shadow,
by the wind, forgotten cloud, blown
thou resembled.
Time has passed, your's has come,
thou remains, a lone legacy will be,
from whispering and gentle waves,
left behind.
Henrique (inspired by John Donne's poem)
No man is an island,
Entire of itself,
Every man is a piece of the continent,
A part of the main.
If a clod be washed away by the sea,
Europe is the less.
As well as if a promontory were.
As well as if a manor of thy friend's
Or of thine own were:
Any man's death diminishes me,
Because I am involved in mankind,
And therefore never send to know for whom the bell tolls;
It tolls for thee.
I know Saphieha (Christopher) has/had bad lungs and needed oxygen during the winter months. He said to me numerous times "that's just life".
If he has passed on, he will be missed. Perhaps he will be programming P2 from above.
Comments
They generate byte code for the interpreter in ROM, and they assemble dat sections into pasm.
propgcc is a compiler, catalina is a compiler.
Of course, lots of people toss the word compiler around meaning anything that processes a high level language into something else... so yeah.
Just happens that Spin includes the PASM syntax, so these tools also assemble that it native instructions.
As far as I know neither of them can take only PASM source as input. There always has to be a bit of Spin wrapped around it. Biffle's propasm had no need for any Spin in the source code.
Yeah, "compiler" is bandied around loosely. There are those who don't seem to be able to tell the difference between a "language", a "compiler", an "IDE", etc.
I mean, because of the SKIPF patterning of PASM code via XBYTE, it is practical to have the interpreter execute ONLY needed PASM instructions. No cycles/instructions need to get wasted sub-decoding bytecodes. It can be pure taking-care-of-business. And XBYTE reads and dispatches bytecodes with a mere 6-clock overhead.
In Spin on the Prop1, tons of instructions were needed in the interpreter just to get to the PASM instructions of interest, all along the way. Now, all that interstitial monkey motion is gone, and we even have _RET_ in the last instruction of a bytecode snippet to immediately retrigger XBYTE.
"..interstitial monkey motion.."
That phrase is going to be stuck in my head forever!
It kind of makes me wonder why not just compile the Spin down to the "PASM instruction of interest" and skip all that byte code thing?
One should be able to cram a lot into the RAM.
I don't mean to be negative or antagonistic here but I wonder what is going on.
Parallax and the P1 have been pushing towards C for sometime in their educational enterprise. And as far as I can tell doing very well.
Surely the P2 effort should follow that profitable path.
And here we antagonizing over the Spin language and it's interpreter for the P2.
Self vs structured. Amateur vs Pro. Projects vs products.
Parallax will benefit from all of it. Formal Parallax education efforts will really begin when the real silicon is known. Until then, it's a risk.
This group will produce core tools. Simple, lean, mean, close to the metal. More can and will come.
Real chips gate a lot of things.
Does that help?
I'd also like to see real P2 chips before one of us dies.
I suspect Sapieha has died.
That would be sad. We have missed him for quite a while.
Last active October 2015.
God bless Sapieha. Wherever he is.
Is this the future of the net? We just drop off line and nobody knows what happened ?
Should I sit down with my lawyer and draft a last will and testament such that he can announce by demise on all forums on which I have a presence?
That would mean including my user name an password to every place in my will.
Has anybody ever done that?
And what if I want to leave all my electronics test gear and components, humble as they are, to interested members of the Parallax forum?
How does one draft that?
As it stands, when I breath my last everything will go in the trash because nobody knows what it is.
From the crowd apart, wandering,
almost unnoticed shadow,
by the wind, forgotten cloud, blown
thou resembled.
Time has passed, your's has come,
thou remains, a lone legacy will be,
from whispering and gentle waves,
left behind.
Henrique (inspired by John Donne's poem)
No man is an island,
Entire of itself,
Every man is a piece of the continent,
A part of the main.
If a clod be washed away by the sea,
Europe is the less.
As well as if a promontory were.
As well as if a manor of thy friend's
Or of thine own were:
Any man's death diminishes me,
Because I am involved in mankind,
And therefore never send to know for whom the bell tolls;
It tolls for thee.
Of course, one may have to fund doing some of it, but how and why are well established things.
Online just needs to be part of the planning now, for those who bother.
I may make a dead man switch. When I can no longer service it, out goes a bunch of data.
Oh boy, too somber.
Remember Man as you go by
As you are now so once was I
As I am now so shall you be,
Prepare yourself to follow me
No, no, wait, I'm not dead yet.
Sorry, we seem to have interrupted this topic a wee bit.
He will be missed if he has passed on - he is/was a great guy.
If he has passed on, he will be missed. Perhaps he will be programming P2 from above.