[fpc-devel] Re: Statistics on compiling the Free Pascal compiler for Win32

Paul Robinson paul at paul-robinson.us
Tue Jan 17 15:39:13 CET 2012

John Lee wrote:

> Why not ask the fpc developers (via fpc-devel) for access to the fpc svn for your new code. 

That's not a bad idea, I'll probably do that, I wanted to get an idea of what's involved first before going to a lot of trouble.  I wanted to see if I was capable first, I have some disabilities that might cause problems.  

I do have one little question, I have Mercurial installed, I can also install SVN, and in fact I had it on another machine, and I'm just curious, as to why they use SVN over Mercurial, is it just that that was what was available at the time and it works satisfactorily enough for the project's purposes, that it's better than Mercurial, or that it's just one of those Coke vs. Pepsi comparisons, they're (CVS vs. SVN vs. Mercurial) just different ways of doing the job like different word processors (or, (say it softly) different programming languages!)?

I sometimes wonder if programmers at the Rite Aid or Walgreens drug store chains use CVS.  (CVS is a competing drug-store chain in the US as well as the name of a source-code repository system.)  Oh well, it was a better joke when I thought of it.

I note that my message about adding two new features to the compiler didn't show up here, I suspect that since I didn't re-subscribe to this list until later, it took it as potential spam so I'll re-submit it.  I'll probably also write one up for my IBM 370 port later.  

> This'll have advantage that it'll be easier for the fpc gurus to advise on any changes needed 
> for the new target, and of course it'll make it available to everyone else too. As you probably 
> know fpc has been ported to many different architectures from the original 
> linux & win32 i386, big/little endian, 32/64 bits alpha/sparc etc  -  tho' not such a 
> different architecture as yours maybe ! - so they know quite a bit about the best way to do it.  

On the pages on the Free Pascal Wiki I'm writing on my attempts to port the Free Pascal Compiler over to the IBM 370 series machine (known now as zSystem), with the initial target being an IBM 370 on OS/VS1, I note the number of many differences, considering that the machine is an upgrade of a design developed in the late 1970s.  (Some of these aren't listed there, I'm just remembering some of them.)
* It's Big Endian (I believe the PDP-11 minicomputer is also.)  Personally as far as visualizing data I prefer Big Endian over Little Endian, but as long as the processor works accurately it doesn't really matter.
* There are 16 registers of 32 bits but in general practice only about 10 of them are available.
* The most you can access at any one point from a register is 4K, whether that's a branch in code, or a piece of data.  If you're going to access more than 4K, you need to set aside more registers.  If you have very large procedures (or a very large main program), or you need to work with very large data structures you may have to break it up into smaller ones, or, most likely, I'll put in some switches to tell the compiler basically to make all branches into potential "long jump-style" ones, where each branch is done similar to a procedure call instead of a "local" branch.
* Only 32-bit operations are available.
* Only tables are available, in-line constants are generally not (this is not exactly true, but is close)
* It's internal character set is EBCDIC, not ASCII.  Also, the character set is not continuous along the alphabet, e.g. doing a test on ['a'..'z'] or ['A'..'Z'] will fail because it will pick up other non-alphabetic characters.

A lot of these restrictions are lifted on the zSystem which is a 64-bit machine, but right now I don't have access to one or the means to test on it (I first have to get the compiler to generate on what I can work with.  So as the saying goes, let's get to "crawl" first before we try to walk or run!)

Since the machine I have to emulate for targeting the compiler toward is the 370 architecture (as opposed to the zSystem) using the OS/VS1 non-interactive (batch) operating system, I'll target the less capable machine/OS, and have (again) more options for things like targeting 64-bit processing, for other operating systems than OS/VS1, etc. 


More information about the fpc-devel mailing list