I was curious what the state of the i8086 generation was in 2.7.x, and whether anyone was working on it. I checked some of the files and I still see references to EAX, etc. so I am assuming it is not functional yet. I was also curious how the memory model will be handled (ie. dynamic arrays greater than 64K if free heap allows it, etc.).
Mailing lists / fpc-devel / 2013-11
State of i8086 generation?
4 messages · 2 people · –
- JJim Leonard 2
- NNikolay Nikolov 2
Reply by email Subscribe to this list Your subscription
Read-only archive. Use j and k to move between messages.
Jim Leonard wrote 6 lines
It should be functional, although it does break occasionally, so you should always keep the latest working version if you plan on using it. I run the testsuite weekly and try to fix any regressions, but occasionally it may take longer if I'm busy. There's a wiki page dedicated to the i8086 port here with more details:
http://wiki.freepascal.org/DOS
Nikolay
Nikolay Nikolov wrote 7 lines
Thanks, I look forward to playing with this. I'm curious if the optimizations in FPC beat those in TP (my guess is very likely, since the optimizations in TP were only those that could be implemented in a single pass, with no peephole optimization).
Jim Leonard wrote 13 lines
Note that right now FPC is still usually slower than TP, mainly because TP's RTL is written mostly in optimized asm, while the FPC RTL is mostly written in pascal. But, of course, you can always help with patches :) Also, there's still no peephole optimizer for i8086 (there's a jump optimizer, though) and regvars don't yet work (they produce wrong code for a reason I've not discovered yet, so they're disabled from -O2. They also cause problems with the register allocator). But eventually, in the long run, FPC should be able to produce much better code than TP. However, I'm still not done with all the memory models yet, so I'm still focusing mostly on testing for correctness, getting more code to compile, fixing bugs, etc. and not so much on optimization. Getting the medium memory model to work was much harder than I expected and I expect that large & compact will be even harder (although, the good part is that we'll probably get both of them working at the same time, since the actual new feature is support for far data; far code is already supported), so my current plan is this:
1) get as much code working under the medium memory model, e.g. get free vision working
2) improve the far pointer support, until it becomes stable enough to be the default pointer type, so we can start the large & compact memory models
3) get the large & compact memory models working and stabilize them
If I'm the only person working on the i8086 port, I'm guessing this will take anything between 6 months to a year, so I'll probably not have much time to work on the optimizer. But then, again, I may get distracted while trying to get something to work and do some work on optimization, so I can get it working fast enough on a vintage machine or to get something to fit in 64kb.
Another distraction I currently have is fixing the 8087 support, since I got one from eBay and installed it on my IBM 5150. The bad thing about 8087, though, is the fact that we cannot easily run automated tests on it. Normally, I run the FPC testsuite with dosbox, which emulates a 387+.
Nikolay
