Matrix transposition: Difference between revisions

Content added Content deleted
(→‎{{header|Picat}}: Added {{out}}, code tag for predicates)
Line 62: Line 62:
ELOOPI EQU * out of loop i
ELOOPI EQU * out of loop i
...</lang>
...</lang>

=={{header|68000 Assembly}}==

<lang 68000devpac>Transpose2DArray_B:
;INPUT:
;A0 = POINTER TO SOURCE ARRAY
;A1 = POINTER TO BACKUP AREA
; (YOU NEED THE SAME AMOUNT OF FREE SPACE AS THE SOURCE ARRAY.)
; (IT'S YOUR RESPONSIBILITY TO KNOW WHERE THAT IS.)
;D0.W = ARRAY ROW LENGTH-1
;D1.W = ARRAY COLUMN HEIGHT-1

MOVEM.L D2-D7,-(SP)
MOVE.W D0,D4 ;width - this copy is our loop counter

.outerloop:
MOVE.W D1,D7 ;height
MOVEQ.L #0,D3
MOVE.W D0,D6 ;width - this copy is used to offset the array
ADDQ.L #1,D6

.innerloop:
MOVE.B (A0,D3),(A1)+
ADD.W D6,D3
DBRA D7,.innerloop

ADDA.L #1,A0
DBRA D4,.outerloop

MOVEM.L (SP)+,D2-D7
RTS</lang>


=={{header|ACL2}}==
=={{header|ACL2}}==