All pastes #449071 Raw Edit

Unnamed

public text v1 · immutable
·published 2007-04-20 00:37 UTC
rendered paste body
	.globl _axel

		_axel:
			pushl	%ebp		
			movl	%esp,%ebp
			pushl	%edx
			
			movl	8(%ebp),%eax		# char dest' Hvor alt ska ende.;
			movl	12(%ebp),%edx		# char format som holder {"en eller annen streng"}
	.L0:	
			cmpb	$0,(%edx)			
			jz		.endl
			movb	(%edx),%bl
			cmpb	$37,%bl
			je		.switch
			movb	%bl,(%eax)
			incl	%edx
			incl	%eax
			jmp		.L0
	.char:	
			movl	basep,%ecx
			movb	(%ecx,%ebp),%bl	
			movb	%bl,(%eax)
			incl	%edx
			incl	%eax
			addl	$4,basep
			jmp		.L0
	.numb:
			push	%edx
			push	%eax
			and		$0,%edx
			movl	basep,%edi
			movl	(%edi,%ebp),%ecx	#hent tallet
			movl	%ecx,nmb
			movl	$10,%esi			#for à dele på10 hver gang
			movl	$10000000,%eax			# lag deletall
	.whnmb:
			cmpl	$0,%eax				#skjekk om deletall = 0
			jz		.endnmb				
			cmp		%eax,%ecx			#Skjekke at dette er riktig vei
			jle		.else				
			push	%eax				#legg deletall på stakk
			movl	%ecx,%eax			#flytt x til der vi skal dele
			popl	%ecx				#hent deletall
			idivl	%ecx				#del eax/ecx
			and		$0,%edx
			idivl	%esi
			addl	asc,%edx
			push	%ecx				#legg deletall på stakk
			popl	%edi				#hent deletall og legg i edi
			popl	%eax				#hent hvor vi er i dest[]
			movb	%dl,(%eax)			#flytt i dest[]
			incl	%eax				#pluss 1 paa eax
			push	%eax				#legg eax paastak
			movl	nmb,%ecx
			and		$0,%eax
			and		$0,%edx
			movl	%edi,%eax
	.else:	
			idivl	%esi				#divide on ten
			jmp		.whnmb
	.endnmb:
			addl	$4,basep
			popl	%eax
			popl	%edx
			incl	%edx
			jmp		.L0

   .L2:		
			movl	basep,%edi
			movl	(%edi,%ebp),%ecx
			#call	dumpreg
   .L3:	
			cmpb	$0,(%ecx)
			jz		.L4
			movb	(%ecx),%bl
			movb	%bl,(%eax)
			incl	%eax
			incl	%ecx
			jmp		.L3
	.L4:
			addl	$4,basep
			incl	%edx
			#incl	%edx
			#incl	%eax
			and		$0,%ecx
			#call	dumpreg
			jmp		.L0
	.switch:
			incl	%edx
			movb	(%edx),%bl
			cmpb	$99,%bl
			jz		.char
			cmpb	$100,%bl
			jz		.numb
			cmpb	$115,%bl						# Her skal det skjekkes etter %s men 115 funker ikke
			jz		.L2
			
	.endl:
			movb	$0,(%eax)
			popl	%edx
			popl	%ebp	
			ret
	.data
		basep:			.long 16
		incecx:			.long 0
		incedi:			.long 0
		nmb:			.long 0
		inctext:		.long 0
		ant:			.long 0
		asc:			.long 48
		big:			.long 10