NonStop S-Series Server Description Manual (G06.27+)
TNS Instruction Set Definition
HP NonStop S-Series Server Description Manual—520331-004
C-17
Instruction Definitions
0 0 0 0 7 6* PSEM "P" a semaphore
DC=wait time
BA=semaphore extended absolute address
'Indivisible On';
xmem[BA+4]:=xmem[BA+4]-1;
if xmem[BA+4] < 0 then
{$R[4] := DC;
$R[5] := BA;
siv[15].parm1_lo:=siv[15].parm1_lo | 5;
set dispatcher interrupt;
'Indivisible Off';
D := $R[3].<16:31>; ! $V0
}
else
{D:=1;
xmem[BA+6]:=CPCB
'Indivisible Off';
};
RP:=RP-3
0 0 0 0 7 7* VSEM "V" a semaphore
BA=semaphore extended absolute address
'Indivisible On';
xmem[BA+4]:=xmem[BA+4]+1;
if xmem[BA+4] <= 0 then
{set dispatcher interrupt;
siv[15].parm1_lo.<12>:=1
$R[4] := BA;
}
else
xmem[BA+6]:=0;
'Indivisible Off';
RP:=RP-2
0 0 0 1 0 reg STRP set RP
RP:=reg
0 0 0 1 1 reg STAR store A in reg
R[reg]:=A; RP:=RP-1
0 0 0 1 2 reg NSAR nondestructive store A in reg
R[reg]:=A
0 0 0 1 3 reg LDRA load register to A
RP:=RP+1; cc(A:=R[reg])
0 0 0 1 4 reg ADRA add register to A
ccn(A:=A+R[reg])
0 0 0 1 5 reg SBRA subtract register from A
ccn(A:=A-R[reg])
0 0 0 1 6 reg ADAR add A to register
ccn(R[reg]:=R[reg]+A);
RP:=RP-1
0 0 0 1 7 reg SBAR subtract A from register
ccn(R[reg]:=R[reg]-A);
RP:=RP-1
0 0 0 2 0 0 LADD logical add
ccl(B:=B+A); RP:=RP-1
0 0 0 2 0 1 LSUB logical subtract
ccl(B:=B-A); RP:=RP-1
Table C-2. Instruction Definitions (page 7 of 38)