SAGA_CLOCK_COUNTER register
Overview
Clock-Cycle Counter register
is a new SAGA Read-Only register. It is a unique feature, never seen in another existing 68k system. It allows to get, in real-time, the number of cycles consumed by one or more CPU instructions. This register can come in handy when a programmer needs to optimize their code and locate greedy routines.
Name
SAGA_CLOCK_COUNTER
Address
0xDE0008
Access
Read-Only
Size
32-bits
Description
Each time register is read, the internal counter
is reinitialized to 0.
Can overflow
if the delay between two calls is too long.
Example
TEST: move.l #$CAFECAFE,d1 ; Operand for DIVU.L tst.l $DE0008 ; Reset the Clock-Cycle counter divu.l #100,d1 ; Consume some CPU cycles move.l $DE0008,d0 ; D0 = Number of cycles consumed by the DIVU instruction. rts
Macros
DEBUG EQU 1 SAGA_CLOCK_COUNTER EQU $DE0008 CLKCNT_RESET MACRO IFNE DEBUG tst.l SAGA_CLOCK_COUNTER ENDC ENDM CLKCNT_SAVE MACRO IFNE DEBUG move.l SAGA_CLOCK_COUNTER,__\1 ENDC ENDM CLKCNT_ADD MACRO IFNE DEBUG move.l d0,-(sp) move.l SAGA_CLOCK_COUNTER,d0 add.l d0,__\1 move.l (sp)+,d0 ENDC ENDM
MyRoutine: move.l #$CAFECAFE,d1 ; Operand for DIVU CLKCNT_RESET ; Reset the Clock-Cycle counter divu.l #100,d1 ; Consume some CPU cycles CLKCNT_SAVE MyCounter ; Save the number of cycles in MyCounter RTS MyCounter: DC.L 0
You are here: start » saga » registers » saga_clock_counter
Last modified: le 2020/08/02 12:37