|
![]() |
Like most of my generation, my first computer was a Commodore 64. My family got one when I was twelve (1984). On it I learned to play games really well, but I also had many ideas for better games, so I decided to learn to write my own. By reading books and trying things, I taught myself to program in BASIC. I wrote several simple games in BASIC (car racing, snow skiing etc), but I wanted to write even better games, so I learned to program in 6502/6510 assembly language. This is probably where I first became interested in the hardware aspects of computers, especially their processors and graphics systems. I wrote several games in assembly language for the 64, including a never completed jet fighter game (not quite a flight simulator). I also wrote my first piece of non-game software, a stock market charting and analysis tool called The Chartist. Today The Chartist still lives (in a hugely improved form)!
In 1987 our family upgraded to an Amiga 500. This
further increased my interest in processors and graphics hardware. I learned
68000 assembly language and wrote a new version of The Chartist
for the Amiga. This version produced the charts in windows on the screen rather
than as printouts, and thus was not dissimilar to the current version. I also
learned a lot about graphics hardware by writing games and other things
on the Amiga. After a while I discovered the C language. I had just
started to program in C when I completed high school and started
attending Bond University. Soon after I started at Bond I upgraded to my
first UNIX workstation.
During my computing science degree at Bond University I learned most of what I know about computers and programming. My interest and existing background knowledge meant that everything clicked just perfectly. I really enjoyed the whole course, especially the subjects on data structures, hardware, compilers, graphics, operating systems, operations research and AI. In fact I enjoyed the work so much that I packed more than a standard workload into each semester and completed the course a semester early.
By the end of the course my primary interests were still the same - processors and graphics - but I had also acquired an interest in data structures, operations research, operating systems, user interfaces, and AI. My final undergraduate semester project was a microarchitecture simulator with a nice graphical user interface, intended to be used to assist in the teaching of the concepts of computer architecture, microarchitecture, and microcode. Unfortunately, it was never used - the RISC revolution made microcode obsolete.
My interest in computer graphics led me to go a bit further with my presentations than most students. I prepared several spectacular 2D and semi-3D animated computer graphics presentations and displayed most of them on the huge projected screens of Bond's lecture theatres. Nothing shows up overhead projectors better than a computer graphics based presentation with spinning and exploding animated titles, projected onto a cinema sized screen, with backing music!
By the time I reached honors I wanted to take on a big project related to compilers and processors, so I chose to write a C++ compiler targeting the Motorola 68040 and MIPS R2000 processors as my honors project! This turned out to be much too big a project, and I ended up working like a slave to complete it in time (8 months). Even then it ended up only compiling a subset of the C++ language (a large subset though). Considering the amount of time I had to do it, my J++ compiler did an excellent job of instruction selection for the 68040. Its instruction selection was competitive with many commercial compilers.
I was selected as valedictorian, and I graduated from Bond
with first class honors in May 1992, less than two and a half years after starting
there.
Since August 1992 I've been doing a PhD at QUT. My primary interest is the area of
code optimization, especially at the very global (interprocedural)
level. I'm particularly interested in aggressively superscalar RISC processors
and the optimizations needed to exploit them (such as global
instruction scheduling, very global register allocation and instruction/data
cache optimizations). My PhD thesis will be entitled
"VGO: A Very Global Optimizer", and will probably be completed
in 1999/2000. I could tell you more, but then I'd have to kill you :-)
Copyright © 1995 Jason Patterson. Last Updated: March 31, 1998.