The MC68020 Instruction Set Specication
3.2 The User-Visible State
As briey mentioned in Chapter 2, we formalize a user-visible machine state as a list of ve components that have their intuitive meanings as the proces- sor status word, the register le, the program counter, the condition code register, and the memory, respectively.
Definition:
mc-state(status,regs,pc,ccr,mem) =list(status,regs,pc,ccr,mem)
Definition: mc-status(s) =car(s)
Definition: mc-rle(s) =cadr(s)
Definition: mc-pc(s) =head(caddr(s),l)
Definition: mc-mem(s) =caddddr(s)
The function mc-state constructs a machine state using its ve argu- ments; the other functionsmc-status,mc-rle,mc-pc,mc-ccr, andmc-mem
are accessors to the ve dierent components of a given machine state. There are four constants b, w, l, and q in the logic to dene the sizes of byte,
word, longword, and quadword of the MC68020, respectively.
In the next ve subsections, we describe the formalization of each of the ve state components.
3.2.1 The Processor Status Word
The processor status word is either the symbol 'running or one of the following symbols indicating some error message if an exception occurs. This status eld is not actually present in any MC68020 chip. Rather, it is the artice of our state formalization by which we indicate that an actual error has arisen, or that an aspect of the MC68020 not dened in our formalization has been encountered during execution.
Definition: read-signal='read unavailable memory
Definition:
write-signal='write rom or unavailable memory
Definition: reserved-signal
= 'motorola reserved for future development
Definition: pc-signal='pc outside rom
Definition: pc-odd-signal='pc at odd address
Definition:
mode-signal
= 'illegal addressing mode in current instruction
We say the machine state is normal if its status is'running.
3.2.2 The Register File
The register le is represented as a list of nonnegative integers, where the rst eight represent the data registers D0 - D7 and the second eight represent the address registers A0 - A7.
Definition:
read-rn(oplen,rn,regs) =head(get-nth(rn,regs),oplen)
Definition:
write-rn(oplen,value,rn,regs)
= put-nth(replace(oplen,value,get-nth(rn,regs)),rn,regs)
The functionsread-rn and write-rnare the two basic operations used to obtain and modify the registerrnin the register lerle. Operations on the register le are formalized in terms of these two functions. The functionsget- nth and put-nth are the list operations to fetch and modify the nth element of a list.
3.2.3 The Program Counter
The program counter PC is simply represented as a nonnegative integer. As an invariant, the PC always points to the next memory location to be considered throughout the specication. Consequently, the PC will point to the next instruction after the execution of the current instruction.
3.2.4 The Condition Code Register
The condition code register CCR is also represented as a nonnegative integer. The rst ve bits of CCR designate the carry, the overow, the zero, the negative, and the extend condition codes, respectively.
Definition: cvznx(c,v,z,n,x) = (x-bit(c) + ((2x-bit(v)) + ((4x-bit(z)) + ((8x-bit(n)) + (16x-bit(x))))))
Definition: set-cvznx(cvznx,ccr) =replace(5,cvznx,ccr)
The function cvznx \collects" the ve condition codes, and the function
set-cvznx updates the ve condition codes in the condition code register. These two functions are used to update the condition codes in CCR.
3.2.5 The Memory
The memory is represented as a pair of binary trees. A binary representation for memory provides some eciency for simulating MC68020 instructions. One of the binary trees is a formalization of memory protection|we may specify that any byte of memory is 'ram,'rom, or'unavailable; the other binary tree holds the data, for example, the actual bytes stored. As dis- cussed elsewhere in this chapter, we use the notion of read-only memory to deal with the issue of cache consistency. We also believe that it is unreal- istic to assert the correctness of machine-code programs without carefully characterizing which parts of memory are read and written|few MC68020 chips are connected to a full 4 gigabytes of RAM. Memory protection issues are not specied in the MC68020 user's manual [40].
The following functions are the basic memory read/write functions. Op- erations on memory are dened in terms of these three functions. The functions pc-read-mem and read-mem return a bit vector formed by the k
bytes from the memory starting at address pcor x, respectively. The func- tion write-mem stores the value in the k bytes of the memory starting at
x.
Definition:
pc-read-mem(pc,mem,k) = if k '0 then0
else app(b,
pc-byte-read(add(32,pc,k 1),mem),
pc-read-mem(pc,mem,k 1))endif
Definition:
read-mem(x,mem,k) = if k '0 then0
else app(b,
byte-read(add(32,x,k 1),mem),
read-mem(x,mem,k 1))endif
Definition:
write-mem(value,x,mem,k) = if k '0 thenmem
else write-mem(tail(value,b),
x,
byte-write(value,add(32,x,k 1),mem),
k 1)endif
For memory protection, there are also three basic functions: pc-read- memp species that a portion of the memory is read-only;read-memp spec-
ies that a portion of the memory is readable; write-memp species that a portion of the memory is writable. We omit their denitions here.