Prologue:
PUBLIC PROCEDURE [name: Rope.
ROPE, label: HandCodingPseudos.Label, args:
INT] = {
associates the name with the label, defines the label and makes it global
HandCodingPseudos.ProcedureEntry[label, args];
HandCodingPseudos.MakeLabelGlobal[name, label];
};
Instructions that use labels
iDFC:
PUBLIC PROC [dest: HandCodingPseudos.Label] = {
HandCoding.drDFC[HandCodingPseudos.UseLabel32[dest]];
};
iLFC:
PUBLIC PROC [dest: HandCodingPseudos.Label] = {
HandCoding.drLFC[HandCodingPseudos.UseLabel16[dest]];
};
iJB:
PUBLIC PROC [dest: HandCodingPseudos.Label] = {
HandCoding.drJB[HandCodingPseudos.UseLabel8A[dest]];
};
iJEQj:
PUBLIC PROC [AlphaZ: HandCoding.Lit8, dest: HandCodingPseudos.Label] = {
HandCoding.drJEBBJ[AlphaZ, HandCodingPseudos.UseLabel8B[dest]];
};
iJNEj:
PUBLIC PROC [AlphaZ: HandCoding.Lit8, dest: HandCodingPseudos.Label] = {
HandCoding.drJNEBBJ[AlphaZ, HandCodingPseudos.UseLabel8B[dest]];
};
iRJGTj:
PUBLIC PROC [a: HandCoding.ShortRegSpec, b: HandCoding.RegSpec, dest: HandCodingPseudos.Label] = {
HandCoding.drRJGBJ[a, b, HandCodingPseudos.UseLabel8B[dest]];
};
iRJGEj:
PUBLIC PROC [a: HandCoding.ShortRegSpec, b: HandCoding.RegSpec, dest: HandCodingPseudos.Label] = {
HandCoding.drRJGEBJ[a, b, HandCodingPseudos.UseLabel8B[dest]];
};
iRJEQj:
PUBLIC PROC [a: HandCoding.ShortRegSpec, b: HandCoding.RegSpec, dest: HandCodingPseudos.Label] = {
HandCoding.drRJEBJ[a, b, HandCodingPseudos.UseLabel8B[dest]];
};
iRJNEj:
PUBLIC PROC [a: HandCoding.ShortRegSpec, b: HandCoding.RegSpec, dest: HandCodingPseudos.Label] = {
HandCoding.drRJNEBJ[a, b, HandCodingPseudos.UseLabel8B[dest]];
};
iRJLEj:
PUBLIC PROC [a: HandCoding.ShortRegSpec, b: HandCoding.RegSpec, dest: HandCodingPseudos.Label] = {
HandCoding.drRJLEBJ[a, b, HandCodingPseudos.UseLabel8B[dest]];
};
iRJLTj:
PUBLIC PROC [a: HandCoding.ShortRegSpec, b: HandCoding.RegSpec, dest: HandCodingPseudos.Label] = {
HandCoding.drRJLBJ[a, b, HandCodingPseudos.UseLabel8B[dest]];
};
Miscellaneous other instructions
iWRI:
PUBLIC PROC [BetaR: HandCoding.RegSpec, AlphaZ: HandCoding.Lit8, BetaL: HandCoding.RegSpec] = {
This just shuffles the operands around to make them appear in a reasonable order.
HandCoding.drWRI[BetaL, BetaR, AlphaZ];
};
}.