|
From: | Alain M. |
Subject: | Re: [lwip-users] Problem With dns.c Using 32-Bit Compilers |
Date: | Tue, 02 Sep 2008 15:29:05 -0300 |
User-agent: | Thunderbird 2.0.0.6 (X11/20070728) |
Grubb, Jared escreveu:
I'm not sure which ARM processor you're referring to, but that can't actually be true. By definition in the C standard, every compiler is guaranteed to have byte access anywhere it wants (IIRC, a byte is defined as the minimal unit addressable on the architecture). The fun part is that a byte (as defined by the C standard) is not guaranteed to have 8-bits!
That is correct... and not :(ARM7 and ARM9r4 do not have physical byte access, that is what I meant. So if the compiler wants byte access, it will do whatever it takes to get the byte, even worse to write it. If you compute pipeline misses, it gets a mess.
There is a very interesting chapter in my ARM book about how to write a program in C in a manner that the compiled code will be efficient. And it is very interesting to see the code generated in Eclipse debugging.
I gess that the same but happen in other 16/32 bit achitectures.So, this is a case where a specially written macro can make a big difference. One advantage of TCP/IP, is that it was originaly written for mainframes with the same problem and almost averything in the headers is inside 32 bit words.
Alain
[Prev in Thread] | Current Thread | [Next in Thread] |