Tag Archives: x86

SPITBOL Update: SPITBOL X86-64 can compile “hello world”

The SPITBOL project is pleased to announce some progress in porting MACRO SPITBOL to x86-64 Linux. (I use MINT, so this should also work on straight Ubuntu.)

This version is able to compile such simple programs as “hello world” but is not yet able to compile itself.

It can be found at http://github.com/hardbol/spitbol

It has the git tag “x86-64-hello-world” and there is a file with this tag in the Downloads section.

Reaching this milestone has been a long slog, albeit an interesting project in relearning X86 assembly language and coding in SPITBOL.

The translator consists of about 3000 lines of SPITBOL code. LEX.SPT consists of about 1000 lines. It produces a file of lexemes which are fed to ASM.SPIT, which consists of about 2000 lines of code. ASM generates assembly code suitable for input to the NASM assembler.

The hard part was to configure ASM.SPT so it can generate code for X86-32 or X86-64.

To try out the system, do

$ make clean;make
$ ./spitbol test/hello.spt

To see the program in action, set Z_TRACE to 1 at the start of ASM.SPT. Then try

$ ./spitbol test/hello.spt >& ad
$ make z

This will produce a *large* file “ae” with an instruction-by-instruction trace of the MINIMAL code, showing the hardware instructions executed and a report of differential changes at the machine register level.

One of the more challenging — and fun — parts of this exercise in porting has been to produce that trace. I found available debuggers, such as GDB and its graphical front-end DDD, of little use in dealing with assembly language, and so had to write my own debugging trace tool.

I’ll keep you posted on further developments.


Linux: The Last OS Standing

One of my favorite films is Akira Kurosawa’s Yojimbo. It stars Toshiru Mifune, who plays a lone samurai who comes into a town where two factions are feuding, and then skillfully plays one against another until he is the last man standing, so it’s no surprise that the film was (poorly) remade as Last Man Standing, starring Bruce Willis, in one of his worst films (all gore, no subtlety, which was the point of Yojimbo.)

I was reminded of this while doing a cleanup/refactoring of the code for Macro SPITBOL.

There has been almost no work on SPITBOL, save the port to Linux, in the last decade. Most of the code has been stable since the mid 80’s, save for ports to different architectures.

SPITBOL has a run-time interface written in C. While perusing this code I noticed the code had conditional text for various operating systems: AIX, BSD, LINUX, SOLARIS, and WINNT. Not Windows, but WINNT, a sign of the age of the code.

I then decided to clean up the code. There was no need for SOLARIS. It’s dead, though its new owner Oracle has not yet addmitted it.

AIX is also an outlier OS now, used only in large servers, so that went next.

BSD, UNIX and LINUX are all variants of UNIX.

That left WINNT. I then realized that, while much of the WINNT code would probably still work, I had absolutely no intereset in supporting it. That’s because Microsoft has not made any meaningful innovation, at least when it comes to Windows, in the last decade or so.

One thing (is it the only thing?) Microsoft does well is to support previous versions of its various OS’s, going all the way back to DOS. For example, the Windows/WINNT version of SPITBOL, last touched over a decade ago, still works, and so is in my view sufficient for Windows users.

I thus edited the source so there is *no* conditional text to distinguish operating systems, because there is only *one* OS of interest. It runs everywhere, and is where operating system innovation can still be found.

So I deleted *all* the conditional text, and changed the source to just use “Unix” instead of “Linux” in the version/achitecture description.

Needless to say doing that edit was a lot of fun. Bye bye, SOLARIS. Bye, bye AIX. Bye, bye Windows. Just Unix is enough for me.

The remaining issue is what hardware to support.

I see only two architectures of interest: X86 and ARM. SPITBOL supports X86 now, and I will port the system to ARM within a few months.

This is one result of working on legacy code. It gives you a sense of what was once important, but no longer is.

It also gives you greater appreciation for the survivors, and all the hard work behind them.

  • Pages

  • October 2021
    M T W T F S S
  • RSS The Wayward Word Press

  • Recent Comments

    daveshields on SPITBOL for OSX is now av…
    Russ Urquhart on SPITBOL for OSX is now av…
    Sahana’s Respo… on A brief history of Sahana by S…
    Sahana’s Respo… on A brief history of Sahana by S…
    James Murray on On being the maintainer, sole…
  • Archives

  • Blog Stats

  • Top Posts

  • Top Rated

  • Recent Posts

  • Archives

  • Top Rated