|
|
|
|
|
|
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
|
|
|
|
|