[Search for users]
[Overall Top Noters]
[List of all Conferences]
[Download this site]
Title: | Mathematics at DEC |
|
Moderator: | RUSURE::EDP |
|
Created: | Mon Feb 03 1986 |
Last Modified: | Fri Jun 06 1997 |
Last Successful Update: | Fri Jun 06 1997 |
Number of topics: | 2083 |
Total number of notes: | 14613 |
170.0. "Loop Invariants" by TURTLE::GILBERT () Tue Oct 23 1984 12:42
Is anyone familiar enough with loop invariants to provide one for this tiny
VAX macro subroutine? It's effectively the same as a division algorithm.
; This little routine computes the multiplicative inverse of any odd longword.
; The input (r0) is an odd longword integer. The output (also r0) satisfies:
;
; input * output = 1 (mod 2**32)
;
invsub: movq r1, -(sp) ; save r1, r2 on the stack
subl3 #1, r0, r2 ; subtract 1 from the input
movq #1, r0 ; set r0 to 1, clear r1
10$: bbc r1, r0, 20$ ; branch if r0 has bit r1 clear
subl2 r2, r0
20$: incl r1
addl2 r2, r2
bneq 10$
movq (sp)+, r1 ; restore r1, r2 from the stack
rsb ; return
T.R | Title | User | Personal Name | Date | Lines
|
---|