The Hawk Computer Architecture
Part of
the Computer Architecture Pages
|
The assembly language source code used here can be assembled with the 32-bit machine independent SMAL assembler (version B); the opcodes for the Hawk are defined in a header file, hawk.h, that must be included at the head of each Hawk assembly language program. A Hawk emulator written in C runs under Linus and other versions of UNIX. There is a hello world program to demonstrate the Hawk.
The Hawk computer is a fictional machine that incorporates many features of modern RISC processors without slavish adherance to any particular real machine. The Hawk instruction set is based on a 32 bit word, typical for modern machines, and includes 15 general registers, a modest number by modern standards.
The Hawk architecture began as a midterm exam question in my spring 1996 offering of Advanced Computer Architecture (22C:122) at the University of Iowa. That unnamed architecture grew into the Hawk through followup questions and discussions. I first reduced the Hawk to workable form for the fall 1996 offering of Computer Organization and Assembly Language Programming (22c:18); I owe quite a bit to my students in that and later classes for their patience in working bugs out of the emulator.
Original release: Mar. 6, 1996
Revised: Feb. 27, 2002 — BCDGET instruction replaced by EX3ADJ
Revised: Mar. 13, 2002 — SSQADJ, BTRUNC instructions added
Revised: July 25, 2002 — recode 0000, FFFF as no-ops, add ADJUST, MOVESL
Revised: Aug 1, 2008 — recode to reverse byte order in IR
Revised: June 25, 2014 — add PLUS, floating point coprocessor and Sparrowhawk
Revised: July 2, 2024 — add floating FPNEG and FPABS, better hyperlinks.