[comp.sys.sun] SPARC assembly language question

rikki@haven.umd.edu (R. L. Welsh) (09/07/89)

The Sun-4 Assembly Language Reference Manual (PN:800-1788-??) states (p. 12):

"All BiCC instructions may indicate that the annul bit is to be 
set by appending ',a' to the opcode; e.g. 'bgeu,a' ... "

What does setting the annul bit do and where can I get a better 
description of SPARC assembly language commands than this particular
document? 

	- Rikki	(UUCP: grebyn!macom1!rikki)

tim@amd.com (Tim Olson) (09/22/89)

In article <1513@brazos.Rice.edu> macom1!rikki@haven.umd.edu (R. L. Welsh) writes:
| X-Sun-Spots-Digest: Volume 8, Issue 123, message 12 of 17
| 
| The Sun-4 Assembly Language Reference Manual (PN:800-1788-??) states (p. 12):
| 
| "All BiCC instructions may indicate that the annul bit is to be 
| set by appending ',a' to the opcode; e.g. 'bgeu,a' ... "
| 
| What does setting the annul bit do and where can I get a better 
| description of SPARC assembly language commands than this particular
| document? 

Most RISC processors, for performance reasons, have "delayed branches",
meaning that the instruction immediately after a branch is executed
regardless of whether the branch is taken or not.  This is done because
the "delay-slot" or "branch shadow" instruction is already being decoded
by the time the branch is executed; it might as well try to do useful work
if it can.

Because the delay-slot instruction is executed regardless of the branch
condition, the instruction must be either beneficial (does useful work) or
innocuous (does not destroy needed values) for both branch paths.  If an
instruction that matches this description cannot be found, then a NOP must
be placed in the branch delay-slot.

Sometimes an instruction can be found that is beneficial in one direction
only.  To make use of these, some RISC processors implement "annulled
branches" -- these branches execute the delay-slot instruction for one
branch path only; in the other case, the delay-slot instruction is
dynamically annulled (turned into a NOP).  For the SPARC, the delay-slot
instruction is annulled if the branch is not taken.

You might try to find a SPARC architecture manual to find out more about
these features; one is available from Fujitsu.

	-- Tim Olson
	Advanced Micro Devices
	(tim@amd.com)