INSTRUCTION SET REFERENCE
6-17
6
6.2.9
bal, balx
Mnemonic:
bal
Branch and Link
balx
Branch and Link Extended
Format:
bal
targ
disp
balx
targ,
dst
mem
reg
Description:
Stores address of instruction following
bal
or
balx
in a register then branches
to the instruction specified with the targ operand.
The
bal
and
balx
instructions are used to call leaf procedures (procedures that
do not call other procedures). The IP saved in the register provides a return IP
that the leaf procedure can branch to (using a
bx
instruction) to perform a
return from the procedure. Note that these instructions do not use the
processor’s call-and-return mechanism, so the calling procedure shares its
local-register set with the called (leaf) procedure.
With
bal
, address of next instruction is stored in register g14. targ operand
value can be no farther than -2
23
to (2
23
- 4) bytes from current IP. When using
the Intel i960 processor assembler, targ must be a label which specifies the
target instruction’s IP.
balx
performs same operation as
bal
except next instruction address is stored
in dst (allowing the return IP to be stored in any available register). With
balx
,
the full address space can be accessed. Here, the target operand is an effective
address, which allows full range of addressing modes to be used to specify
target IP. “IP + displacement” addressing mode allows instruction to be
IP-relative. Indirect branching can be performed by placing target address in a
register and then using a register-indirect addressing mode.
See
section 2.3, “MEMORY ADDRESSING MODES” (pg. 2-6)
for a
complete discussion of addressing modes available with memory-type
operands.
Action:
bal:
g14 = IP + 4;
temp[31:2] = sign_extension(targ[23:2]);
IP[31:2] = IP[31:2] + temp[31:2];
IP[1:0] = 0;
balx:
dst = IP + instruction_length;
# Instruction_length = 4 or 8 depending on the addressing mode used.
IP[31:2] = effective_address(targ[31:2]);
# Resume execution at new IP.
IP[1:0] = 0;
Summary of Contents for i960 Jx
Page 1: ...Release Date December 1997 Order Number 272483 002 i960 Jx Microprocessor Developer s Manual ...
Page 24: ......
Page 25: ...1 INTRODUCTION ...
Page 26: ......
Page 35: ...2 DATA TYPES AND MEMORY ADDRESSING MODES ...
Page 36: ......
Page 46: ......
Page 47: ...3 PROGRAMMING ENVIRONMENT ...
Page 48: ......
Page 73: ...4 CACHE AND ON CHIP DATA RAM ...
Page 74: ......
Page 85: ...5 INSTRUCTION SET OVERVIEW ...
Page 86: ......
Page 111: ...6 INSTRUCTION SET REFERENCE ...
Page 112: ......
Page 233: ...7 PROCEDURE CALLS ...
Page 234: ......
Page 256: ......
Page 257: ...8 FAULTS ...
Page 258: ......
Page 291: ...9 TRACING AND DEBUGGING ...
Page 292: ......
Page 309: ...10 TIMERS ...
Page 310: ......
Page 324: ......
Page 325: ...11 INTERRUPTS ...
Page 326: ......
Page 369: ...12 INITIALIZATION AND SYSTEM REQUIREMENTS ...
Page 370: ......
Page 412: ......
Page 413: ...13 MEMORY CONFIGURATION ...
Page 414: ......
Page 429: ...14 EXTERNAL BUS ...
Page 430: ......
Page 468: ......
Page 469: ...15 TEST FEATURES ...
Page 470: ......
Page 493: ...A CONSIDERATIONS FOR WRITING PORTABLE CODE ...
Page 494: ......
Page 502: ......
Page 503: ...B OPCODES AND EXECUTION TIMES ...
Page 504: ......
Page 515: ...C MACHINE LEVEL INSTRUCTION FORMATS ...
Page 516: ......
Page 523: ...D REGISTER AND DATA STRUCTURES ...
Page 524: ......
Page 550: ......
Page 551: ...GLOSSARY ...
Page 552: ......
Page 561: ...INDEX ...
Page 562: ......
Page 578: ......