Efficiency



Let's say I want to write compact and fast code.

I'm thinking about something like this:

; proc returns ZF set if char is 'a' or 'z'
myproc proc
cmp al,'a'
je @@1
cmp al,'z'
@@1: ret
myproc endp

compared to C version:

int myfunc(int c)
{
if (c == 'a' || c == 'z')
return 1;
return 0;
}


What is the penalty? Okay, these are very basic and small routines,
but I guess that modern C compilers are more aware about optimal
alignment and also it seems that modern Pentiums and above really like
their instructions more RISC-like (aka boring instr set).

I am used to instructions like lodsb, stosb, inc, dec etc... I'm
adapted to that kind of mental image, lodsb for example in my mind is
a very convenient instruction to load a byte from memory pointed by
DS:ESI. I can visualize it. Also loop instruction is nice, it's
compact (in a conceptual way), but I don't know...

Why is it so that nowadays:

mov eax,[esi]
mov [edi],eax

is more efficient than

lodsd
stosd

?

I just don't get it.


But to my actual question, is it likely that I'm going to take a speed
hit or cache misses by using these old asm constructs vs. more modern
C-like constructs? Code compactness doesn't necessarily translate to
speed, no?


Hopefully somebody can make some sense what I'm talking about, I'm not
sure if I express myself clearly :)

.



Relevant Pages

  • Re: folders.dbx wont compact
    ... "savamac" wrote in message ... > instructions to the letter - everything seems to compact ok, ... Protect your PC ...
    (microsoft.public.windows.inetexplorer.ie6_outlookexpress)
  • Re: logic minimization
    ... space efficient way (for both data and machine instructions). ... code to represent a permutation of 60 elements. ...
    (comp.compression)
  • FS: Quantum Dedicated Module XKZ2 for Nikon & Canon flashes
    ... Connects Quantum QB1c (compact) or Bantam battery to the following ... Boxed like new with instructions, $35 shipped, PayPal ok. ...
    (rec.photo.marketplace)
  • Compacting folders
    ... I noticed in one of the newsletters, instructions on how to compact oe ... why would one want to compact news folders. ...
    (microsoft.public.windows.inetexplorer.ie6_outlookexpress)