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;
Содержание i960 Jx
Страница 1: ...Release Date December 1997 Order Number 272483 002 i960 Jx Microprocessor Developer s Manual ...
Страница 24: ......
Страница 25: ...1 INTRODUCTION ...
Страница 26: ......
Страница 35: ...2 DATA TYPES AND MEMORY ADDRESSING MODES ...
Страница 36: ......
Страница 46: ......
Страница 47: ...3 PROGRAMMING ENVIRONMENT ...
Страница 48: ......
Страница 73: ...4 CACHE AND ON CHIP DATA RAM ...
Страница 74: ......
Страница 85: ...5 INSTRUCTION SET OVERVIEW ...
Страница 86: ......
Страница 111: ...6 INSTRUCTION SET REFERENCE ...
Страница 112: ......
Страница 195: ...INSTRUCTION SET REFERENCE 6 83 6 Opcode mov 5CCH REG movl 5DCH REG movt 5ECH REG movq 5FCH REG See Also LOAD STORE lda ...
Страница 233: ...7 PROCEDURE CALLS ...
Страница 234: ......
Страница 256: ......
Страница 257: ...8 FAULTS ...
Страница 258: ......
Страница 291: ...9 TRACING AND DEBUGGING ...
Страница 292: ......
Страница 309: ...10 TIMERS ...
Страница 310: ......
Страница 324: ......
Страница 325: ...11 INTERRUPTS ...
Страница 326: ......
Страница 369: ...12 INITIALIZATION AND SYSTEM REQUIREMENTS ...
Страница 370: ......
Страница 412: ......
Страница 413: ...13 MEMORY CONFIGURATION ...
Страница 414: ......
Страница 429: ...14 EXTERNAL BUS ...
Страница 430: ......
Страница 468: ......
Страница 469: ...15 TEST FEATURES ...
Страница 470: ......
Страница 493: ...A CONSIDERATIONS FOR WRITING PORTABLE CODE ...
Страница 494: ......
Страница 502: ......
Страница 503: ...B OPCODES AND EXECUTION TIMES ...
Страница 504: ......
Страница 515: ...C MACHINE LEVEL INSTRUCTION FORMATS ...
Страница 516: ......
Страница 523: ...D REGISTER AND DATA STRUCTURES ...
Страница 524: ......
Страница 550: ......
Страница 551: ...GLOSSARY ...
Страница 552: ......
Страница 561: ...INDEX ...
Страница 562: ......
Страница 578: ......