Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!mnetor!uunet!husc6!hao!ames!sdcsvax!ucbvax!YMIR.BITNET!NED From: NED@YMIR.BITNET (Ned Freed) Newsgroups: comp.os.vms Subject: Instruction set help file part 2 of 4 Message-ID: <8708100302.AA23973@ucbvax.Berkeley.EDU> Date: Thu, 6-Aug-87 00:40:00 EDT Article-I.D.: ucbvax.8708100302.AA23973 Posted: Thu Aug 6 00:40:00 1987 Date-Received: Mon, 10-Aug-87 04:35:40 EDT Sender: daemon@ucbvax.BERKELEY.EDU Distribution: world Organization: The ARPA Internet Lines: 1402 ==Instruction set help file part 2==cut here==cut here==cut here==cut here== longword 0 is pushed on the stack (for the condition handler). FP is replaced by SP, AP is replaced by arglist. The trap enables in PSW are set to a known state. Integer and decimal overflow are set according to bits 14 and 15 of the entry mask respectively. The floating underflow bit is cleared and the T-bit is unaffected. PC is replaced by dst + 2, skipping the entry mask and transferring control to the byte beyond the mask. .if manual .s 1 .endif manual Notes: If bits 13:12 of the entry mask are not zero, a reserved operand fault occurs and the condition codes will be unpredictable. The procedure calling standard specifies that any procedure must preserve the values of R2 through R11 (via the entry mask), and R0 and R1 are never preserved. The time shown for CALLG assumes no registers are saved. If R0 through R9 are saved the time is [780-23.40]. If no registers are saved a CALLG followed immediately by a RET requires: [780-13.88, 750-19.41, 730-36.78] [780F-13.87, 750F-19.41, 730F-37.65] .if manual .test page 10 .send toc .ifnot global .save .flags bold .hl 1 ^*CALLS instruction\* .restore .send toc .endif global .index ^Instructions, machine>); {maximize privilege}; tmp3 = SEXT(code); if {PSL_ EQLU 1} then HALT; PSL___SP = SP tmp4 = tmp2__sp; PROBEW (from tmp4 - 1 to tmp4 - 12 with mode = tmp2); if {access violation} then {initiate access violation fault}; if {translation not valid} then {initiate translation not valid}; {initiate CHMx exception with new__mode = tmp2 and parameter = tmp3 using 40 + tmp1*4 as SCB offset using tmp4 as the new SP and not storing SP again} .if manual .s 1 .endif manual C. Codes: N = 0, Z = 0, V = 0, C = 0 .if manual .s 1 .endif manual Exceptions: Halt .if manual .s 1 .endif manual Opcodes: BC CHMK Change mode to kernel .index ^Instructions, machine> = {coefficient of x**(order-1-n)}. This operation is done automatically by the system library routine LIB_$CRC__TABLE (poly.rl, table.ab). The table is the location of a 64-byte table into which the result will be written. This instruction will produce an unpredictable result if the table is not well formed. All well formed tables have entry[0] = 0 and entry[8] = a polynomial created by the relationship given above. If the data is of zero length, R0 = inicrc. The times shown assume a 16 byte CRC operation. .if manual .test page 10 .send toc .ifnot global .save .flags bold .hl 1 ^*CVTxx instructions\* .restore .send toc .endif global .else manual 2 CVTxx .endif manual .index ^Instructions, machine>. After execution R0 = R2 = 0, R1 = address of the sign byte of src and R3 = address of the most significant digit of dst. dst and R0-R3 are unpredictable if src overlaps dst or a reserved operand abort occurs. .if manual .test page 10 .send toc .ifnot global .save .flags bold .hl 1 ^*CVTTP instruction\* .restore .send toc .endif global .index ^Instructions, machine>), or if the translation of the least significant digit produces an invalid decimal digit or sign nibble. If src is -0, dst will be set to +0 with N = 0 and Z = 1. If srclen is 0 dst will be set to +0 and tbl will not be referenced. The times shown above assume 7 digits are packed; if 18 are packed the times are: [780-25.57, 750-36.27, 730-87.51] [780F-25.57, 750F-36.27, 730F-86.55] .if manual .test page 10 .send toc .ifnot global .save .flags bold .hl 1 ^*DECx instructions\* .restore .send toc .endif global .else manual 2 DECx .endif manual .nf Purpose: decrement - subtract 1 from an integer .if manual .s 1 .endif manual Format: opcode dif.mx .if manual .s 1 .endif manual Operation: dif = dif - 1 .if manual .s 1 .endif manual C. Codes: N = dif LSS 0, Z = dif EQL 0 V = {integer overflow}, C = {borrow from MSB} .if manual .s 1 .endif manual Exceptions: Integer overflow .if manual .s 1 .endif manual Opcodes: 97 DECB Decrement byte [780-0.40] .index ^Instructions, machine>