English fixes to docs/smallint.txt

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Denys Vlasenko 2010-10-24 03:23:59 +02:00
parent 8f8ee534a7
commit 738e4de013

View File

@ -8,14 +8,15 @@
I think that this optimization is wrong. I think that this optimization is wrong.
index_in_str_array returns int. At best, compiler will use it as-is. index_in_str_array returns int. At best, compiler will use it as-is.
At worst, compiler will try to make sure that it is properly casted At worst, compiler will try to make sure that it is properly cast
into a byte, which probably results in "n = n & 0xff" on many architectures. into a byte, which probably results in "n = n & 0xff" on many architectures.
You save nothing on space here because i is not stored on-stack, You save nothing on space here because i is not stored on-stack,
gcc will keep it in register. And even it is *is* stored, gcc will keep it in register. And even if it *is* stored,
it is *stack* storage, which is cheap (unlike data/bss). it is *stack* storage, which is cheap (unlike data/bss).
small[u]ints are useful _mostly_ for: small[u]ints are useful _mostly_ for:
(a) flag variables (a) flag variables
(a1) global flag variables - make data/bss smaller (a1) global flag variables - make data/bss smaller
(a2) local flag variables - "a = 5", "a |= 0x40" are smaller (a2) local flag variables - "a = 5", "a |= 0x40" are smaller
@ -26,10 +27,11 @@ small[u]ints are useful _mostly_ for:
movl $0x0,(%eax) is "c7 00 00 00 00 00" movl $0x0,(%eax) is "c7 00 00 00 00 00"
movb $0x0,(%eax) is "c6 00 00" movb $0x0,(%eax) is "c6 00 00"
(b) small integer structure members, when you have many such (b) small integer structure members, when you have many such
structures allocated, structures allocated,
or when these are global objects of this structure type or when these are global objects of this structure type
small[u]ints are *NOT* useful for: small[u]ints are *NOT* useful for:
(a) function parameters and return values - (a) function parameters and return values -
they are pushed on-stack or stored in registers, bytes here are *harder* they are pushed on-stack or stored in registers, bytes here are *harder*
to deal with than ints to deal with than ints