Comments (3)
That's a pretty ugly inconsistency, thanks for pointing it out.
The code generator has special cases for certain loops with constant bounds and one of those cases is for i,s,to,e
loop where s
and e
are known constants and s > e
, which is rewritten to a no-op. But, as you noticed, it's inconsistent with how non-constant bounds with the same values work.
After thinking about it for a while, I decided that performance is the most important thing and checking if the bounds are in a wrong order is too expensive. Usually they are not, so if the programmer really doesn't want to deal with overflow, then they have to check it themself.
I'm now working on making the second behaviour the default guaranteed one. I've removed all special cases that are inconsistent with everything else and I'm currently looking through various pieces of old Millfork code to see if this change breaks anything, but I don't expect any major problems.
Also, this will make it possible to do things like easily iterating over non-printable ASCII characters: for c,$7F,to,$1F
from millfork.
The fix has been implemented as described, will be included in the next release.
from millfork.
0.3.10 has been released and contains the fix.
from millfork.
Related Issues (20)
- Structs can't have volitile members HOT 1
- Implement ++ and -- operators in the Millfork language HOT 4
- file array initiliser can't handle maths
- Address of sid_v1_sr in file c64_sid.mfk is incorrect HOT 1
- 65CE02 JSR incorrect Assmbly HOT 1
- Multiline comments HOT 5
- possible to pass a function to a macro? or find the identifier for the current function? HOT 3
- Maths doesn't promote to destination type HOT 6
- compiler accepts 'array(type)' but not 'array (type)'
- switch_hirom in c64_easyflash.mfk should write to $DE00 not $DE01
- clear_carry return doesn't work ?
- for x : array strange behavior
- Unnamed Structure and Union Fields
- Other label format support? HOT 3
- Support identity table usage HOT 2
- Assigning struct word member from another struct word member HOT 1
- Compiler assuming C clear when it isn't?
- Hello World example from documentation doesn't work HOT 1
- IX index is broken in the Z80 assembler.
- Strange invalid 16-bit optimization HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from millfork.