| 
	|  |  |  |  
        
          | 
              
                | 
                    
                      | 
                          
                            | 
	| 
	
		|  |  |  
		|  | IT Security and Insecurity Portal |  |  
 
	|  | mmx strlen implementation |  |  
	| 
	
		|  Posted: Sat Feb 04, 2006 3:19 pm |   |  |  
	| 
	
		| 
		
			| 
			
				| 
				| erg0t |  | Valuable expert |  |  
  |  |  |  | Joined: Apr 08, 2005 |  | Posts: 55 |  | Location: Uruguay |  |  
 
 |  |  
			|  |  |  
 
 | 
		
			| Hi, yesterday I was iluminated and it ended in a very fast and small strlen implementation. It uses 2 general registers, two mmx registers, and has only one branch. Can be modified easly to scan for another bytes. Here is the fasm macro:
 
 macro strlen Param
 {
 mov ecx, Param
 pxor mm1,mm1
 sub ecx, 8
 bucle:
 add ecx, 8
 movq mm0, [ecx]
 pcmpeqb mm0,mm1
 pmovmskb eax,mm0
 test eax, eax
 jz bucle
 sub ecx, Param
 bsf eax, eax
 add eax, ecx
 }
 |  |  
		|  |  |  
	|  |  
	| 
	
		|  Posted: Tue Feb 07, 2006 7:54 pm |   |  |  
	| 
	
		| 
		
			| 
			
				| 
				| erg0t |  | Valuable expert |  |  
  |  |  |  | Joined: Apr 08, 2005 |  | Posts: 55 |  | Location: Uruguay |  |  
 
 |  |  
			|  |  |  
 
 | 
		
			| I optimized a little the rutine. Benchmarks:
 
 old
 
  	  | Quote: |  	  | real    0m9.412s
 user    0m9.355s
 sys     0m0.025s
 
 | 
 new
 
  	  | Quote: |  	  | real    0m8.120s
 user    0m8.073s
 sys     0m0.019s
 
 | 
 
 new code:
 
  	  | Quote: |  	  | macro strlen Param
 {
 mov ecx, Param
 pxor mm1,mm1
 bucle:
 movq mm0, [ecx]
 add ecx, 8
 pcmpeqb mm0,mm1
 pmovmskb eax,mm0
 test eax, eax
 jz bucle
 bsf eax, eax
 lea eax, [ecx+eax-8]
 sub eax, Param
 }
 
 | 
 |  |  
		|  |  |  
	|  |  
	| 
	
		|  Posted: Thu Feb 09, 2006 12:00 am |   |  |  
	| 
	
		| 
		
			| 
			
				| 
				| LINUX |  | Moderator |  |  
  |  |  |  | Joined: May 24, 2004 |  | Posts: 404 |  | Location: Caiman |  |  
 
 |  |  
			|  |  |  
 
 | 
		
			| iluminated  code   
 personal note >  pone  el   source  del bot aka no seas careta
 |  |  
		|  |  |  
	|  |  
	| 
	
		|  Posted: Thu Feb 09, 2006 12:05 am |   |  |  
	| 
	
		| 
		
			| 
			
				| 
				| erg0t |  | Valuable expert |  |  
  |  |  |  | Joined: Apr 08, 2005 |  | Posts: 55 |  | Location: Uruguay |  |  
 
 |  |  
			|  |  |  
 
 | 
		
			|  	  | LINUX wrote: |  	  | iluminated  code   
 personal note >  pone  el   source  del bot aka no seas careta
 | 
 todavia le falta xD
 |  |  
		|  |  |  
	|  |  
	| www.waraxe.us Forum Index -> Assembler 
 
	
		| You cannot post new topics in this forum You cannot reply to topics in this forum
 You cannot edit your posts in this forum
 You cannot delete your posts in this forum
 You cannot vote in polls in this forum
 
 | All times are GMT Page 1 of 1
 
 |  |  
	|  |  
 Powered by phpBB © 2001-2008 phpBB Group
 
 
 
 
 |  |  |  |  |