bea
OpCase(i_call_f):
{
ASSERT(VALID_INSTR(*(I+2)));
*E = (BeamInstr) (I+2);;
/* ... dispatch code intentionally left out ... */
}
bea
OpCase(move_xx):
{
Eterm tmp_packed1 = BeamExtraData(I[0]);
BeamInstr next_pf = BeamCodeAddr(I[1]);
xb((tmp_packed1>>BEAM_TIGHT_SHIFT)) = xb(tmp_packed1&BEAM_TIGHT_MASK);
I += 1;
ASSERT(VALID_INSTR(next_pf));
GotoPF(next_pf);
}
bea
test_heap(Nh, Live) {
$GC_TEST(0, $Nh, $Live);
}
bea
# In ops.tab
move2 x y x y
// In instrs.tab
move2(S1, D1, S2, D2) {
Eterm V1, V2;
V1 = $S1;
V2 = $S2;
$D1 = V1;
$D2 = V2;
}
bea
OpCase(jump_f):
{
BeamInstr next_pf = BeamCodeAddr(I[1]);
ASSERT(VALID_INSTR(*(I + (fb(BeamExtraData(I[0]))) + 0)));
I += fb(BeamExtraData(I[0])) + 0;;
Goto(*I);;
I += 1;
ASSERT(VALID_INSTR(next_pf));
GotoPF(next_pf);
}
bea
+--------------------+--------------------+
I -> | 40 | &&lb_move_cx |
+--------------------+--------------------+
| Tagged atom 'id' |
+--------------------+--------------------+
bea
Athelstan:RLjXiyxx56D9s
Mama:RLMzFazUFPVRE
Papa:RL8wKTlBoVLKk
|