⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bitmtess.s

📁 arm ads1.2 with crack.rar
💻 S
字号:
;/*
; * Bit Manipulation assembler test harness
; * Copyright (C) ARM Limited 1998-1999. All rights reserved.
; */

	INCLUDE intworkm.h

outputarg	RN 0
outputarg2	RN 1

inputarg	RN 0
inputarg2	RN 1
inputarg3	RN 2
inputarg4	RN 3

; internal register names

output		RN 0
output2		RN 7

input		RN 1
input2		RN 2
input3		RN 3
input4		RN 4
input5		RN 5
input6		RN 6
input7		RN 7

constant	RN 8
constant2	RN 9
constant3	RN 10
constant4	RN 11

temp		RN 12
temp2		RN 14

	; include code fragment macros

	INCLUDE	bitmanm.h
	
	; generic macro for initialisation

	MACRO
		INIT	$name, $inargs, $outargs, $arguments, $const1, $const2, $const3, $const4

		EXPORT	init_$name
		EXPORT	call_$name
		EXPORT	end_$name

init_$name	; initialise the registers before macro call
		STMFD	sp!, { R4-R12, lr }		; save APCS registers
		
		ADD temp, sp, #40				; put stack back to prior to saving register states
		IF $inargs > 4					; load off 4, 5, 6 since input 7 placed first on stack
			LDMFD	temp!, { input5 }
		ENDIF
		IF $inargs > 5
			LDMFD	temp!, { input6 }
		ENDIF
		IF $inargs > 6
			LDMFD	temp!, { input7 }
		ENDIF
		IF $inargs > 3
			MOV input4, inputarg4
		ENDIF
		IF $inargs > 2
			MOV input3, inputarg3
		ENDIF
		IF $inargs > 1
			MOV input2, inputarg2
		ENDIF
		MOV	input, inputarg
		
		IF "$const1" <> ""
			LDR	constant, $const1
		ENDIF
		IF "$const2" <> ""
			LDR	constant2, $const2
		ENDIF
		IF "$const3" <> ""
			LDR	constant3, $const3
		ENDIF
		IF "$const4" <> ""
			LDR	constant4, $const4
		ENDIF

call_$name	; call the macro
    	$name $arguments

end_$name	; save results of macro call
		
		MOV outputarg, output
		IF $outargs > 1
			MOV	outputarg2, output2
		ENDIF

		RETURN "r4-r12","","",""	; return (rlist, sp, lr, no condition)
	MEND
	

	AREA	|INITCODE|, CODE $interwork
	
	; initialisation routines for each maths macro
	; parameters are:
	;	macro name
	;	number of input arguments
	;	argument list (given in "" so that entire list is passed to macro asis)
	
	INIT	BCDADD,		2, 1, "output, input, input2, temp, constant, constant2", =0x33333333, =0x88888888

	INIT	BITREV,		1, 1, "output, input, temp, constant"
	INIT	BITREVC,	1, 1, "output, input, temp, constant, constant2, constant3, constant4", =0xFFFF00FF, =0x0F0F0F0F, =0x33333333, =0x55555555

	INIT	BYTEREV,	1, 1, "output, input, temp"
	INIT	BYTEREVC,	1, 1, "output, input, temp, constant", =0xFFFF00FF

	INIT	BYTEWISEMAX, 2, 2, "output, output2, input, input2, temp, constant", =0x01010101

	INIT	LSBSET,		1, 1, "output, input, temp"
	INIT	MSBSET,		1, 1, "output, input, temp"

	INIT	POPCOUNT,	1, 1, "output, input, temp, constant, constant2", =0x49249249, =0xC71C71C7
	INIT	POPCOUNT7,  7, 1, "output, input, input2, input3, input4, input5, input6, input7, constant, constant2, constant3", =0x55555555, =0x33333333, =0x0F0F0F0F

	END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -