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

📄 arm-asm.f

📁 这个是关于G.726算法的源程序
💻 F
📖 第 1 页 / 共 4 页
字号:

INSTRUCTIOND# stc2   ( -- )   \ ARM Assembler, co-processor instruction
	FD800000 , FE100000 , FFFF102C , ' CO-MEM# , F1E000FF ,

INSTRUCTION# cdp2   ( -- )   \ ARM Assembler, co-processor instruction
	FE000000 , FF000010 , FF20302C , ' CO-DATA# ,

\ ----------------------------------------------------------------------------
\ ARM5E instructions
\ ----------------------------------------------------------------------------

PUBLIC: d   ( -- )   \ ARM Assembler, load/store double instruction modifier
	01C000D0
	OP-VALUE @ INVERT 00100000 AND 0F RSHIFT OR   \ add in ldr/str bit
	EXTRA-MEM-OP2
;

\ ----------------------------------------------------------------------------

PUBLIC: pld   ( -- )   \ ARM Assembler, PLD instruction
	ldr r15 F1400000 F1600000 OP-BUILD ;

\ ----------------------------------------------------------------------------

: CO-MOV2#   ( u -- )   \ Handle immediate operand for MCRR/MRCC 
	0F CHECK#
	4 LSHIFT 000000F0 OP-BUILD
	RESET-#
;

INSTRUCTION# mcrr   ( -- )   \ ARM Assembler, co-processor double instruction
	EC400000 , 0FF00000 , FF20100C , ' CO-MOV2# ,

INSTRUCTION# mrrc   ( -- )   \ ARM Assembler, co-processor double instruction
	EC500000 , 0FF00000 , FF20100C , ' CO-MOV2# ,

\ ----------------------------------------------------------------------------

INSTRUCTION qadd   ( -- )   \ ARM Assembler, saturated arithmetic instruction
	E1000050 , 0FF00FF0 , FF10000C ,

INSTRUCTION qsub   ( -- )   \ ARM Assembler, saturated arithmetic instruction
	E1200050 , 0FF00FF0 , FF10000C ,

INSTRUCTION qdadd   ( -- )   \ ARM Assembler, saturated arithmetic instruction
	E1400050 , 0FF00FF0 , FF10000C ,

INSTRUCTION qdsub   ( -- )   \ ARM Assembler, saturated arithmetic instruction
	E1600050 , 0FF00FF0 , FF10000C ,

\ ----------------------------------------------------------------------------

INSTRUCTION smlabb   ( -- )   \ ARM Assembler, dsp multiply instruction
	E1000080 , 0FF000F0 , 0C080010 ,

INSTRUCTION smlatb   ( -- )   \ ARM Assembler, dsp multiply instruction
	E10000a0 , 0FF000F0 , 0C080010 ,

INSTRUCTION smlabt   ( -- )   \ ARM Assembler, dsp multiply instruction
	E10000c0 , 0FF000F0 , 0C080010 ,

INSTRUCTION smlatt   ( -- )   \ ARM Assembler, dsp multiply instruction
	E10000e0 , 0FF000F0 , 0C080010 ,

INSTRUCTION smlawb   ( -- )   \ ARM Assembler, dsp multiply instruction
	E1200080 , 0FF000F0 , 0C080010 ,

INSTRUCTION smlawt   ( -- )   \ ARM Assembler, dsp multiply instruction
	E12000c0 , 0FF000F0 , 0C080010 ,

INSTRUCTION smulbb   ( -- )   \ ARM Assembler, dsp multiply instruction
	E1600080 , 0FF0F0F0 , FF080010 ,

INSTRUCTION smultb   ( -- )   \ ARM Assembler, dsp multiply instruction
	E16000a0 , 0FF0F0F0 , FF080010 ,

INSTRUCTION smulbt   ( -- )   \ ARM Assembler, dsp multiply instruction
	E16000c0 , 0FF0F0F0 , FF080010 ,

INSTRUCTION smultt   ( -- )   \ ARM Assembler, dsp multiply instruction
	E16000e0 , 0FF0F0F0 , FF080010 ,

INSTRUCTION smulwb   ( -- )   \ ARM Assembler, dsp multiply instruction
	E12000a0 , 0FF0F0F0 , FF080010 ,

INSTRUCTION smulwt   ( -- )   \ ARM Assembler, dsp multiply instruction
	E12000e0 , 0FF0F0F0 , FF080010 ,

INSTRUCTION smlalbb   ( -- )   \ ARM Assembler, dsp multiply instruction
	E1400080 , 0FF000F0 , 0800100C ,

INSTRUCTION smlaltb   ( -- )   \ ARM Assembler, dsp multiply instruction
	E14000a0 , 0FF000F0 , 0800100C ,

INSTRUCTION smlalbt   ( -- )   \ ARM Assembler, dsp multiply instruction
	E14000c0 , 0FF000F0 , 0800100C ,

INSTRUCTION smlaltt   ( -- )   \ ARM Assembler, dsp multiply instruction
	E14000e0 , 0FF000F0 , 0800100C ,

\ ----------------------------------------------------------------------------
\ ARM5J instructions
\ ----------------------------------------------------------------------------

INSTRUCTION bxj   ( -- )   \ ARM Assembler, branch instruction
	E12FFF20 , 0FFFFFF0 , FFFFFF00 ,

\ ----------------------------------------------------------------------------
\ ARM6 instructions
\ ----------------------------------------------------------------------------

INSTRUCTION# mcrr2   ( -- )   \ ARM Assembler, co-processor double instruction
	FC400000 , FFF00000 , FF20100C , ' CO-MOV2# ,

INSTRUCTION# mrrc2   ( -- )   \ ARM Assembler, co-processor double instruction
	FC500000 , FFF00000 , FF20100C , ' CO-MOV2# ,

\ ----------------------------------------------------------------------------

: CPS#   ( u -- )   \ Handle immediate operand for CPS instruction 
	1F CHECK#
	00020000 OR 0002001F OP-BUILD
;

FLAGS IFLAGS   ( c -- )   \ Parse flags for CPS instruction
	CHAR a C, 8 C,
	CHAR i C, 7 C,
	CHAR f C, 6 C,
	0 C,

INSTRUCTIOND# cpsie   ( -- )   \ ARM Assembler, CPS instruction
	F1080000 , FFFDFE20 , FFFFFFFF , ' CPS# , F002001F ,

PUBLIC: cpsie   ( -- )
	cpsie IFLAGS ;

INSTRUCTIOND# cpsid   ( -- )   \ ARM Assembler, CPS instruction
	F10C0000 , FFFDFE20 , FFFFFFFF , ' CPS# , F002001F ,

PUBLIC: cpsid   ( -- )
	cpsid IFLAGS ;

INSTRUCTION# cps   ( -- )   \ ARM Assembler, CPS instruction
	F1000000 , FFFDFFE0 , FFFFFFFF , ' CPS# ,

\ ----------------------------------------------------------------------------

INSTRUCTION setend   ( -- )   \ ARM Assembler, SETEND instruction
	F1010000 , FFFFFDFF , FFFFFFFF ,

PUBLIC: le   ( -- )   \ ARM Assembler, modifier for SETEND instruction
	OP-VALUE @ F1010000 =   \ if SETEND instruction...
	IF 000 200 OP-BUILD     \ ... set LE bit to zero
	ELSE le                 \ else do less-or-equal condition code
	THEN
	;

PUBLIC: be   ( -- )   \ ARM Assembler, modifier for SETEND instruction
	200 200 OP-BUILD ;

\ ----------------------------------------------------------------------------

INSTRUCTIOND rfe   ( -- )   \ ARM Assembler, RFE instruction
	F8100A00 , FE50FFFF , FFFFFF10 , 01A00000 ,

: SRS#   ( u -- )   \ Handle immediate operand for SRS instruction 
	1F CHECK# 0000001F OP-BUILD  RESET-# ;

INSTRUCTIOND# srs   ( -- )   \ ARM Assembler, SRS instruction
	F84D0A00 , FE5FFFE0 , FFFFFFFF , ' SRS#  , 01A00000 ,

\ ----------------------------------------------------------------------------

INSTRUCTION ldrex   ( -- )   \ ARM Assembler, swap instruction
	E1900F9F , 0FF00FFF , FFFF100C ,

INSTRUCTION strex   ( -- )   \ ARM Assembler, swap instruction
	E1800F90 , 0FF00FF0 , FF10000C ,

\ ----------------------------------------------------------------------------

INSTRUCTION umaal   ( -- )   \ ARM Assembler, multiply instruction
	E0400090 , 0FF000F0 , 0800100C ,

\ ----------------------------------------------------------------------------

: PAS-INSTRUCTION   ( x "<spaces>name" -- )   \ Parallel add/sub intruction
	PUBLIC-CREATE ,
	DOES>   ( -- )
	@ 0FF00FF0 FF00100C OP-BEGIN
;

E6100F10 PAS-INSTRUCTION sadd16   ( -- )   \ ARM Assembler, parallel add/sub
E6100F30 PAS-INSTRUCTION saddsubx   ( -- )   \ ARM Assembler, parallel add/sub
E6100F50 PAS-INSTRUCTION ssubaddx   ( -- )   \ ARM Assembler, parallel add/sub
E6100F70 PAS-INSTRUCTION ssub16   ( -- )   \ ARM Assembler, parallel add/sub
E6100F90 PAS-INSTRUCTION sadd8   ( -- )   \ ARM Assembler, parallel add/sub
E6100FF0 PAS-INSTRUCTION ssub8   ( -- )   \ ARM Assembler, parallel add/sub

E6200F10 PAS-INSTRUCTION qadd16   ( -- )   \ ARM Assembler, parallel add/sub
E6200F30 PAS-INSTRUCTION qaddsubx   ( -- )   \ ARM Assembler, parallel add/sub
E6200F50 PAS-INSTRUCTION qsubaddx   ( -- )   \ ARM Assembler, parallel add/sub
E6200F70 PAS-INSTRUCTION qsub16   ( -- )   \ ARM Assembler, parallel add/sub
E6200F90 PAS-INSTRUCTION qadd8   ( -- )   \ ARM Assembler, parallel add/sub
E6200FF0 PAS-INSTRUCTION qsub8   ( -- )   \ ARM Assembler, parallel add/sub

E6300F10 PAS-INSTRUCTION shadd16   ( -- )   \ ARM Assembler, parallel add/sub
E6300F30 PAS-INSTRUCTION shaddsubx   ( -- )   \ ARM Assembler, parallel add/sub
E6300F50 PAS-INSTRUCTION shsubaddx   ( -- )   \ ARM Assembler, parallel add/sub
E6300F70 PAS-INSTRUCTION shsub16   ( -- )   \ ARM Assembler, parallel add/sub
E6300F90 PAS-INSTRUCTION shadd8   ( -- )   \ ARM Assembler, parallel add/sub
E6300FF0 PAS-INSTRUCTION shsub8   ( -- )   \ ARM Assembler, parallel add/sub

E6500F10 PAS-INSTRUCTION uadd16   ( -- )   \ ARM Assembler, parallel add/sub
E6500F30 PAS-INSTRUCTION uaddsubx   ( -- )   \ ARM Assembler, parallel add/sub
E6500F50 PAS-INSTRUCTION usubaddx   ( -- )   \ ARM Assembler, parallel add/sub
E6500F70 PAS-INSTRUCTION usub16   ( -- )   \ ARM Assembler, parallel add/sub
E6500F90 PAS-INSTRUCTION uadd8   ( -- )   \ ARM Assembler, parallel add/sub
E6500FF0 PAS-INSTRUCTION usub8   ( -- )   \ ARM Assembler, parallel add/sub

E6600F10 PAS-INSTRUCTION uqadd16   ( -- )   \ ARM Assembler, parallel add/sub
E6600F30 PAS-INSTRUCTION uqaddsubx   ( -- )   \ ARM Assembler, parallel add/sub
E6600F50 PAS-INSTRUCTION uqsubaddx   ( -- )   \ ARM Assembler, parallel add/sub
E6600F70 PAS-INSTRUCTION uqsub16   ( -- )   \ ARM Assembler, parallel add/sub
E6600F90 PAS-INSTRUCTION uqadd8   ( -- )   \ ARM Assembler, parallel add/sub
E6600FF0 PAS-INSTRUCTION uqsub8   ( -- )   \ ARM Assembler, parallel add/sub

E6700F10 PAS-INSTRUCTION uhadd16   ( -- )   \ ARM Assembler, parallel add/sub
E6700F30 PAS-INSTRUCTION uhaddsubx   ( -- )   \ ARM Assembler, parallel add/sub
E6700F50 PAS-INSTRUCTION uhsubaddx   ( -- )   \ ARM Assembler, parallel add/sub
E6700F70 PAS-INSTRUCTION uhsub16   ( -- )   \ ARM Assembler, parallel add/sub
E6700F90 PAS-INSTRUCTION uhadd8   ( -- )   \ ARM Assembler, parallel add/sub
E6700FF0 PAS-INSTRUCTION uhsub8   ( -- )   \ ARM Assembler, parallel add/sub

\ ----------------------------------------------------------------------------

: PKH/SAT-LSR#   ( x -- )   \ Handle immediate operand for PKT & SAT shifts
	1F CHECK#  7 LSHIFT 00000F80 OP-BUILD  RESET-# ;

PUBLIC: lsl   ( -- )   \ Extend LSL shift to cope with PKH & SAT instructions
	OP-VALUE @ 0F800070 AND 06800010 <>
	IF lsl EXIT THEN   \ if not PKH/SAT instruction do normal LSL
	00000000 00000040 OP-BUILD
	['] PKH/SAT-LSR# '# !
;

: PKH/SAT-ASR#   ( x -- )
	1- 1F CHECK# 1+  1F AND PKH/SAT-LSR# ;

PUBLIC: asr   ( -- )   \ Extend ASR shift to cope with PKH & SAT instructions
	OP-VALUE @ 0F800030 AND 06800010 <>
	IF asr EXIT THEN   \ if not PKH/SAT instruction do normal ASR
	00000040 DUP OP-BUILD
	['] PKH/SAT-ASR# '# !
;

INSTRUCTIOND pkhbt   ( -- )   \ ARM Assembler, PKHBT instruction
	E6800010 , 0FF00030 , FF00100C , F0000FC0 ,

PUBLIC: pkhtb   ( -- )   \ ARM Assembler, PKHTB instruction
	pkhbt ;

: SAT#   ( x -- )   \ Handle immediate operand for SAT instructions
	1F CHECK#  10 LSHIFT 001F0000 OP-BUILD  RESET-# ;

INSTRUCTIOND# ssat   ( -- )   \ ARM Assembler, SSAT instruction
	E6A00010 , 0FE00030 , FFFF000C , ' SAT# , F0000FC0 ,

INSTRUCTIOND# usat   ( -- )   \ ARM Assembler, USAT instruction
	E6E00010 , 0FE00030 , FFFF000C , ' SAT# , F0000FC0 ,

: SAT16#   ( x -- )
	F CHECK#  10 LSHIFT 000F0000 OP-BUILD  RESET-# ;

INSTRUCTION# ssat16   ( -- )   \ ARM Assembler, SSAT16 instruction
	E6A00F30 , 0FF00FF0 , FFFF000C , ' SAT16# ,

INSTRUCTION# usat16   ( -- )   \ ARM Assembler, USAT16 instruction
	E6E00F30 , 0FF00FF0 , FFFF000C , ' SAT16# ,

INSTRUCTION sel   ( -- )   \ ARM Assembler, SEL instruction
	E6800FB0 , 0FF00FF0 , FF00100C ,

\ ----------------------------------------------------------------------------

: EXT#   ( x -- x)   \ Handle immediate operand for Extend instructions
	DUP FFFFFFE7 AND IF INVALID# THEN
	PKH/SAT-LSR#
;

PUBLIC: ror   ( -- )   \ Extend ROR shift to cope with Extend instructions
	OP-VALUE @ 0F8000F0 AND 06800070 <>
	IF ror EXIT THEN   \ if not extend instruction do normal ROR
	['] EXT# '# !
;

INSTRUCTIOND sxtab16   ( -- )   \ ARM Assembler, extend instruction
	E6800070 , 0FF00070 , FF00100C , F0000F80 ,

INSTRUCTIOND sxtab   ( -- )   \ ARM Assembler, extend instruction
	E6A00070 , 0FF00070 , FF00100C , F0000F80 ,

INSTRUCTIOND sxtah   ( -- )   \ ARM Assembler, extend instruction
	E6B00070 , 0FF00070 , FF00100C , F0000F80 ,

INSTRUCTIOND uxtab16   ( -- )   \ ARM Assembler, extend instruction
	E6C00070 , 0FF00070 , FF00100C , F0000F80 ,

INSTRUCTIOND uxtab   ( -- )   \ ARM Assembler, extend instruction
	E6E00070 , 0FF00070 , FF00100C , F0000F80 ,

INSTRUCTIOND uxtah   ( -- )   \ ARM Assembler, extend instruction
	E6F00070 , 0FF00070 , FF00100C , F0000F80 ,

INSTRUCTIOND sxtb16   ( -- )   \ ARM Assembler, extend instruction
	E68F0070 , 0FFF0070 , FFFF000C , F0000F80 ,

INSTRUCTIOND sxtb   ( -- )   \ ARM Assembler, extend instruction
	E6AF0070 , 0FFF0070 , FFFF000C , F0000F80 ,

INSTRUCTIOND sxth   ( -- )   \ ARM Assembler, extend instruction
	E6BF0070 , 0FFF0070 , FFFF000C , F0000F80 ,

INSTRUCTIOND uxtb16   ( -- )   \ ARM Assembler, extend instruction
	E6CF0070 , 0FFF0070 , FFFF000C , F0000F80 ,

INSTRUCTIOND uxtb   ( -- )   \ ARM Assembler, extend instruction
	E6EF0070 , 0FFF0070 , FFFF000C , F0000F80 ,

INSTRUCTIOND uxth   ( -- )   \ ARM Assembler, extend instruction
	E6FF0070 , 0FFF0070 , FFFF000C , F0000F80 ,

INSTRUCTION rev   ( -- )   \ ARM Assembler, reverse instruction
	E6BF0F30 , 0FFF0FF0 , FFFF000C ,

INSTRUCTION rev16   ( -- )   \ ARM Assembler, reverse instruction
	E6BF0FB0 , 0FFF0FF0 , FFFF000C ,

INSTRUCTION revsh   ( -- )   \ ARM Assembler, reverse instruction
	E6FF0FB0 , 0FFF0FF0 , FFFF000C ,

\ ----------------------------------------------------------------------------

INSTRUCTION smuad   ( -- )   \ ARM Assembler, multiply instruction
	E700F010 , 0FF0F0F0 , FF080010 ,

INSTRUCTION smuadx   ( -- )   \ ARM Assembler, multiply instruction
	E700F030 , 0FF0F0F0 , FF080010 ,

INSTRUCTION smusd   ( -- )   \ ARM Assembler, multiply instruction
	E700F050 , 0FF0F0F0 , FF080010 ,

INSTRUCTION smusdx   ( -- )   \ ARM Assembler, multiply instruction
	E700F070 , 0FF0F0F0 , FF080010 ,

INSTRUCTION smmul   ( -- )   \ ARM Assembler, multiply instruction
	E750F010 , 0FF0F0F0 , FF080010 ,

INSTRUCTION smmulr   ( -- )   \ ARM Assembler, multiply instruction
	E750F030 , 0FF0F0F0 , FF080010 ,

INSTRUCTION smlad   ( -- )   \ ARM Assembler, multiply instruction
	E7000010 , 0FF000F0 , 0C080010 ,

INSTRUCTION smladx   ( -- )   \ ARM Assembler, multiply instruction
	E7000030 , 0FF000F0 , 0C080010 ,

INSTRUCTION smlsd   ( -- )   \ ARM Assembler, multiply instruction
	E7000050 , 0FF000F0 , 0C080010 ,

INSTRUCTION smlsdx   ( -- )   \ ARM Assembler, multiply instruction
	E7000070 , 0FF000F0 , 0C080010 ,

INSTRUCTION smlald   ( -- )   \ ARM Assembler, multiply instruction
	E7400010 , 0FF000F0 , 0800100C ,

INSTRUCTION smlaldx   ( -- )   \ ARM Assembler, multiply instruction
	E7400030 , 0FF000F0 , 0800100C ,

INSTRUCTION smlsld   ( -- )   \ ARM Assembler, multiply instruction
	E7400050 , 0FF000F0 , 0800100C ,

INSTRUCTION smlsldx   ( -- )   \ ARM Assembler, multiply instruction
	E7400070 , 0FF000F0 , 0800100C ,

INSTRUCTION smmla   ( -- )   \ ARM Assembler, multiply instruction
	E7500010 , 0FF000F0 , 0C080010 ,

INSTRUCTION smmlar   ( -- )   \ ARM Assembler, multiply instruction
	E7500030 , 0FF000F0 , 0C080010 ,

INSTRUCTION smmls   ( -- )   \ ARM Assembler, multiply instruction
	E75000d0 , 0FF000F0 , 0C080010 ,

INSTRUCTION smmlsr   ( -- )   \ ARM Assembler, multiply instruction
	E75000f0 , 0FF000F0 , 0C080010 ,

\ ----------------------------------------------------------------------------

INSTRUCTION usad8   ( -- )   \ ARM Assembler, USAD instruction
	E780F010 , 0FF0F0F0 , FF080010 ,

INSTRUCTION usada8   ( -- )   \ ARM Assembler, USAD instruction
	E7800010 , 0FF000F0 , 0C080010 ,

\ ----------------------------------------------------------------------------

PREVIOUS PREVIOUS PREVIOUS DEFINITIONS

DECIMAL

⌨️ 快捷键说明

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