http://anonsvn.wireshark.org/viewvc/viewvc.cgi?view=rev&revision=50271
User: wmeier
Date: 2013/06/30 04:03 PM
Log:
Declare slist[] as static (reduces storage & code executed: *See below);
Declare dlist[] similarly to slist[] (not really needed since generated storage/code was OK as is)
*On Windows the following program generates sub-optimal code
(when built using VC10 or VC11 with CFLAGS as used when building Wireshark).
void foo(void) {
const char *const zz[] = {"ABC", "abc"};
}
-------------
Code generated:
<snip>
_DATA SEGMENT
$SG1013 DB 'ABC', 00H !!! note string stored twice !!
$SG1014 DB 'ABC', 00H
$SG1015 DB 'abc', 00H
$SG1016 DB 'abc', 00H
_DATA ENDS
<snip>
; 1 : void foo(void) {
push ebp
mov ebp, esp
sub esp, 8
; 2 : const char *const zz[] = {"ABC", "abc"};
mov DWORD PTR _zz$[ebp], OFFSET $SG1014 !! note: each ptr of array
mov DWORD PTR _zz$[ebp+4], OFFSET $SG1016 !! individually pushed on stack
<snip>
Not shown: Declaring zz as 'static' generates much better code....
Directory: /trunk/epan/
Changes Path Action
+5 -5 column.c Modified