Title: SPARC Instruction Set
1(No Transcript)
2SPARC Programming Model
- 24 window registers
- 8 global registers
- Control registers
- Multiply step
- PSR (status flags, etc.)
- Trap Base register
- Window Invalid Mask
- Two program counters (PC and nPC)
3SPARC Program
/ This program converts a temperature in
Celcius to Fahrenheit. George Wells - 30 May
2003 / offs 32 / Variables c and f
are stored in l0 and l1 / .global
main main mov 24, l0 !
Initialize c 24 mov 9, o0 ! 9
into o0 for multiplication mov l0,
o1 ! c into o1 for multiplication
call .mul ! Result in o0 nop
! Delay slot mov 5, o1
! 5 into o1 for division call .div
! Result in o0 nop
! Delay slot
4Example (cont.)
... add o0, offs, l1 ! f
result offs mov 1, g1 !
Trap dispatch ta 0 !
Trap to system
5Filling Delay Slots
mov 9, o0 ! 9 into o0 for
multiplication mov l0, o1 ! c
into o1 for multiplication call .mul
! Result in o0 nop !
Delay slot
6Modified Program
main mov 24, l0 ! Initialize c
24 mov 9, o0 ! 9 into o0 for
multiplication call .mul !
Result in o0 mov l0, o1 ! c into
o1 for multiplication call .div
! Result in o0 mov 5, o1 ! 5
into o1 for division ...
7(No Transcript)
83. Control Transfer Instructions
- Branching
- Unconditional ba bn
- Conditional bicc
- icc Integer Condition Codes
- Condition flags are set explicitly by arithmetic
and logical operations - E.g. addcc
9Delayed Control Transfer
- Increases the efficiency of pipelining
10Example
/ This program converts temperatures between 10
and 20 in Celcius to Fahrenheit. George
Wells - 30 May 2003 / offs 32 /
Variables c and f are stored in l0 and l1 /
.global main main mov 10, l0
! Initialize c 10 loop mov
9, o0 ! 9 into o0 for .mul
call .mul ! Result in o0
mov l0, o1 ! c into o1 for .mul
call .div ! Result in o0
mov 5, o1 ! 5 into o1 for .div
. . .
11Example (cont.)
. . . add o0, offs, l1 ! f
result offs add l0, 1, l0
! c cmp l0, 21 ! c lt 21
? bl loop nop
! Delay slot mov 1, g1
! Trap dispatch ta 0
! Trap to system
12Annulled Branches
- Delay slot instruction is ignored
- Conditional if branch is not taken
- Unconditional always annulled
13An Annulled Branch
while (a lt 17) a a b
14Optimised Assembler
! Assumes a is in l0 and b is in l1 b test
! See if loop should execute nop ! Delay
slot loop test cmp l0, 17 ! a lt 17
ble,a loop ! If so branch back to start add
l0, l1, l0 ! a a b
15(No Transcript)
164. Logical and Arithmetic Operations
- Logical Operators
- and or xor
- xnor andn orn
- cc to set the condition codes
- Shift Operators
- sra srl sll
17Arithmetic Operators
- Only addition and subtraction
- addxcc
- subxcc
- x with carry
- cc to set the flags
18Multiplication
- Long multiplication is supported by the multiply
step instruction - mulscc
19Division
- Use the standard routines
- .div .rem
- .udiv .urem
20(No Transcript)