32 lines
		
	
	
		
			649 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			32 lines
		
	
	
		
			649 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
!	cmp64*() - 64 bit compare			Author: Kees J. Bot
 | 
						|
!								7 Dec 1995
 | 
						|
.sect .text
 | 
						|
.define _cmp64, _cmp64u, _cmp64ul
 | 
						|
 | 
						|
_cmp64:				! int cmp64(u64_t i, u64_t j);
 | 
						|
	mov	ecx, esp
 | 
						|
cmp64:	xor	eax, eax
 | 
						|
	mov	edx, 4(ecx)
 | 
						|
	sub	edx, 12(ecx)
 | 
						|
	mov	edx, 8(ecx)
 | 
						|
	sbb	edx, 16(ecx)
 | 
						|
	sbb	eax, eax		! eax = - (i < j)
 | 
						|
	mov	edx, 12(ecx)
 | 
						|
	sub	edx, 4(ecx)
 | 
						|
	mov	edx, 16(ecx)
 | 
						|
	sbb	edx, 8(ecx)
 | 
						|
	adc	eax, 0			! eax = (i > j) - (i < j)
 | 
						|
	ret
 | 
						|
 | 
						|
_cmp64u:			! int cmp64u(u64_t i, unsigned j);
 | 
						|
_cmp64ul:			! int cmp64ul(u64_t i, unsigned long j);
 | 
						|
	mov	ecx, esp
 | 
						|
	push	16(ecx)
 | 
						|
	mov	16(ecx), 0
 | 
						|
	call	cmp64
 | 
						|
	pop	16(ecx)
 | 
						|
	ret
 | 
						|
 | 
						|
!
 | 
						|
! $PchId: cmp64.ack.s,v 1.2 1996/04/11 18:59:57 philip Exp $
 |