If you have studied Computer system architecture at any point of time, you can understand that everything inside a machine occurs because of the clock cycles inside the CPU. Now I'm not sure about this, but to reach a specific memory location, if the address is a multiple of 4 or 8, it facilitates the address bus in locating the variable.
On Sat, Jul 30, 2011 at 8:41 PM, tech rascal <[email protected]>wrote: > This is more efficient at hardware level (needs less cpu ticks to read or > write variable). > > I am asking ..how it needs less CPU ticks for accessing the variable?? > > On Sat, Jul 30, 2011 at 8:33 PM, Nikhil Gupta > <[email protected]>wrote: > >> As explained by someone above : Structure padding is done to try and make >> sure that variables start in memory at addresses that are a multiple of >> their size. This is more efficient at hardware level (needs less cpu ticks >> to read or write variables) and in some platforms this is mandatory, >> though not on i386. There are CPU's that can only handle double >> precision floats if they are aligned on addresses that are a multiople of 8. >> >> On Sat, Jul 30, 2011 at 8:23 PM, tech rascal <[email protected]>wrote: >> >>> @ Nikhil: please explain y these memory spaces r left empty??? or hw >>> structure padding increase execution speed? >>> >>> On Sat, Jul 30, 2011 at 8:05 PM, Nikhil Gupta <[email protected] >>> > wrote: >>> >>>> They remain empty. You cannot use them. The purpose for which they are >>>> left will be defeated then. >>>> >>>> >>>> On Sat, Jul 30, 2011 at 1:03 PM, Puneet Gautam <[email protected] >>>> > wrote: >>>> >>>>> @everyone: What happens to those padded byte addresses.. do they >>>>> remain empty or what..? >>>>> Can we utilize those padded bytes in any way ..? >>>>> >>>>> >>>>> On 7/30/11, tech rascal <[email protected]> wrote: >>>>> > can anyone explain in detail .....how structure padding is >>>>> advantageous??? >>>>> > >>>>> > On Fri, Jul 29, 2011 at 10:28 PM, Rohit Srivastava >>>>> > <[email protected]>wrote: >>>>> > >>>>> >> padding based on the bit interleaving(low order) which is basically >>>>> >> hardware dependent. >>>>> >> >>>>> >> >>>>> >> On Fri, Jul 29, 2011 at 10:10 PM, Puneet Gautam >>>>> >> <[email protected]>wrote: >>>>> >> >>>>> >>> Thanks guys...so much...!! >>>>> >>> >>>>> >>> On 7/29/11, nullpointer <[email protected]> wrote: >>>>> >>> > #include<stdio.h> >>>>> >>> > #include<conio.h> >>>>> >>> > struc MyStructA { >>>>> >>> > >>>>> >>> > char a; >>>>> >>> > char b; >>>>> >>> > int c; >>>>> >>> > }; >>>>> >>> > >>>>> >>> > struct MyStructB { >>>>> >>> > char a; >>>>> >>> > int c; >>>>> >>> > char b; >>>>> >>> > }; >>>>> >>> > >>>>> >>> > int main(void) { >>>>> >>> > >>>>> >>> > struct MyStructA A; >>>>> >>> > struct MyStructB B; >>>>> >>> > >>>>> >>> > int sizeA = sizeof(struct MyStructA); >>>>> >>> > int sizeB = sizeof(struct MyStructB); >>>>> >>> > return 0; >>>>> >>> > >>>>> >>> > } >>>>> >>> > >>>>> >>> > OUTPUT IS >>>>> >>> > A = 8 >>>>> >>> > B = 12 >>>>> >>> > Structure padding is done to try and make sure that variables >>>>> start in >>>>> >>> > memory at addresses that are a multiple of their size. >>>>> >>> > This is more efficient at hardware level (needs less cpu ticks to >>>>> read >>>>> >>> > or write variables) and in some platforms this is mandatory, >>>>> though >>>>> >>> > not on i386. There are CPU's that can only handle double >>>>> precision >>>>> >>> > floats if they are aligned on addresses that are a multiople of >>>>> 8. >>>>> >>> > >>>>> >>> > >>>>> >>> > In this struct: >>>>> >>> > struct MyStructA { >>>>> >>> > >>>>> >>> > char a; >>>>> >>> > char b; >>>>> >>> > int c; >>>>> >>> > }; >>>>> >>> > the beginning of the struct is to be assumed at 0 (I'l explain >>>>> later) >>>>> >>> > a is 1 byte so it needs no padding in front of it. >>>>> >>> > the same goes for b. >>>>> >>> > but c is 4 bytes. it should be placed at an address boundary that >>>>> is a >>>>> >>> > multiple of 4, so the compiler adds 2 dummy bytes in front of it. >>>>> >>> > These 2 bytes change the size from 6 to 8. >>>>> >>> > Now in this struct: >>>>> >>> > struct MyStructB { >>>>> >>> > char a; >>>>> >>> > int c; >>>>> >>> > char b; >>>>> >>> > }; >>>>> >>> > >>>>> >>> > a starts on 0, so no need for padding. >>>>> >>> > c needs 3 bytes in front of it, and b needs no padding. >>>>> >>> > this would bring the struct size to 9. HOWEVER, suppose that you >>>>> place >>>>> >>> > 2 of those structs in an array, the address rules for the second >>>>> >>> > struct in the array are the same as for the first struct. >>>>> >>> > If that second struct would start at byte 10, this would not be >>>>> true >>>>> >>> > so the compiler also inserts some padding at the end of the >>>>> structure >>>>> >>> > so that the next struct after it starts at a multiple of the size >>>>> of >>>>> >>> > its largest member. >>>>> >>> > >>>>> >>> > >>>>> >>> > >>>>> >>> > >>>>> >>> > On Jul 29, 3:36 pm, Arun Vishwanathan <[email protected]> >>>>> wrote: >>>>> >>> >> @puneet : no , in this case since 4 bytes will be used for int a >>>>> and >>>>> >>> int c >>>>> >>> >> and then 1 byte for char b with 3 padded bytes next..it wud be >>>>> the >>>>> >>> >> same >>>>> >>> >> here >>>>> >>> >> >>>>> >>> >> On Fri, Jul 29, 2011 at 12:11 PM, Puneet Gautam >>>>> >>> >> <[email protected]>wrote: >>>>> >>> >> >>>>> >>> >> >>>>> >>> >> >>>>> >>> >> > @nikhil: If i declare "Char b" after "int c".., would there be >>>>> any >>>>> >>> >> > difference...? >>>>> >>> >> >>>>> >>> >> > On 7/28/11, Nikhil Gupta <[email protected]> wrote: >>>>> >>> >> > > Here's another example. >>>>> >>> >> >>>>> >>> >> > > struct example >>>>> >>> >> > > { >>>>> >>> >> > > int a; >>>>> >>> >> > > char b; >>>>> >>> >> > > int c; >>>>> >>> >> > > } >>>>> >>> >> >>>>> >>> >> > > Now if a variable of type example is declared then >>>>> >>> >> > > (considering base address as 2000) >>>>> >>> >> > > a gets : 2000 to 2003 >>>>> >>> >> > > b gets : 2004 >>>>> >>> >> > > c gets : 2005 to 2008 ? NO >>>>> >>> >> >>>>> >>> >> > > It gets 2008 to 2011. The bytes from 2005 to 2007 (3 bytes) >>>>> are >>>>> >>> padded >>>>> >>> >> > > in >>>>> >>> >> > > this case. >>>>> >>> >> >>>>> >>> >> > > On Thu, Jul 28, 2011 at 12:18 AM, Aman Goyal < >>>>> >>> [email protected]> >>>>> >>> >> > wrote: >>>>> >>> >> >>>>> >>> >> > >> yes this will be the case. >>>>> >>> >> >>>>> >>> >> > >> On Wed, Jul 27, 2011 at 11:35 PM, Puneet Gautam >>>>> >>> >> > >> <[email protected]>wrote: >>>>> >>> >> >>>>> >>> >> > >>> @nikhil:So what u mean is that if i have: >>>>> >>> >> >>>>> >>> >> > >>> struct{ >>>>> >>> >> > >>> int a; >>>>> >>> >> > >>> char b[5]; >>>>> >>> >> > >>> }; >>>>> >>> >> >>>>> >>> >> > >>> the size of this struct's node will be 12 not 9.., to make >>>>> it a >>>>> >>> >> > multiple >>>>> >>> >> > >>> of 4?? >>>>> >>> >> >>>>> >>> >> > >>> On 7/26/11, Nikhil Gupta <[email protected]> >>>>> wrote: >>>>> >>> >> > >>> > Padding is not a topic of self referential structure. >>>>> >>> >> >>>>> >>> >> > >>> > Padding means that extra spaces of memory are used by >>>>> the >>>>> >>> compiler >>>>> >>> >> > >>> > to >>>>> >>> >> > >>> > allocate memory. This is done to have the memory address >>>>> as a >>>>> >>> >> > multiple >>>>> >>> >> > >>> of >>>>> >>> >> > >>> > the size of the variable. This speeds up the processing >>>>> of >>>>> >>> these >>>>> >>> >> > >>> variables >>>>> >>> >> > >>> > by the compiler. >>>>> >>> >> >>>>> >>> >> > >>> > On Tue, Jul 26, 2011 at 8:09 PM, Puneet Gautam >>>>> >>> >> > >>> > <[email protected]>wrote: >>>>> >>> >> >>>>> >>> >> > >>> >> what is meant by padding in self_referenced structure? >>>>> >>> >> > >>> >> Is it always necessary? >>>>> >>> >> >>>>> >>> >> > >>> >> -- >>>>> >>> >> > >>> >> You received this message because you are subscribed to >>>>> the >>>>> >>> >> > >>> >> Google >>>>> >>> >> > >>> Groups >>>>> >>> >> > >>> >> "Algorithm Geeks" group. >>>>> >>> >> > >>> >> To post to this group, send email to >>>>> >>> [email protected]. >>>>> >>> >> > >>> >> To unsubscribe from this group, send email to >>>>> >>> >> > >>> >> [email protected]. >>>>> >>> >> > >>> >> For more options, visit this group at >>>>> >>> >> > >>> >>http://groups.google.com/group/algogeeks?hl=en. >>>>> >>> >> >>>>> >>> >> > >>> > -- >>>>> >>> >> > >>> > Nikhil Gupta >>>>> >>> >> > >>> > Senior Co-ordinator, Publicity >>>>> >>> >> > >>> > CSI, NSIT Students' Branch >>>>> >>> >> > >>> > NSIT, New Delhi, India >>>>> >>> >> >>>>> >>> >> > >>> > -- >>>>> >>> >> > >>> > You received this message because you are subscribed to >>>>> the >>>>> >>> Google >>>>> >>> >> > >>> Groups >>>>> >>> >> > >>> > "Algorithm Geeks" group. >>>>> >>> >> > >>> > To post to this group, send email to >>>>> >>> [email protected]. >>>>> >>> >> > >>> > To unsubscribe from this group, send email to >>>>> >>> >> > >>> > [email protected]. >>>>> >>> >> > >>> > For more options, visit this group at >>>>> >>> >> > >>> >http://groups.google.com/group/algogeeks?hl=en. >>>>> >>> >> >>>>> >>> >> > >>> -- >>>>> >>> >> > >>> You received this message because you are subscribed to >>>>> the >>>>> >>> Google >>>>> >>> >> > Groups >>>>> >>> >> > >>> "Algorithm Geeks" group. >>>>> >>> >> > >>> To post to this group, send email to >>>>> [email protected]. >>>>> >>> >> > >>> To unsubscribe from this group, send email to >>>>> >>> >> > >>> [email protected]. >>>>> >>> >> > >>> For more options, visit this group at >>>>> >>> >> > >>>http://groups.google.com/group/algogeeks?hl=en. >>>>> >>> >> >>>>> >>> >> > >> -- >>>>> >>> >> > >> You received this message because you are subscribed to the >>>>> >>> >> > >> Google >>>>> >>> >> > Groups >>>>> >>> >> > >> "Algorithm Geeks" group. >>>>> >>> >> > >> To post to this group, send email to >>>>> [email protected]. >>>>> >>> >> > >> To unsubscribe from this group, send email to >>>>> >>> >> > >> [email protected]. >>>>> >>> >> > >> For more options, visit this group at >>>>> >>> >> > >>http://groups.google.com/group/algogeeks?hl=en. >>>>> >>> >> >>>>> >>> >> > > -- >>>>> >>> >> > > Nikhil Gupta >>>>> >>> >> > > Senior Co-ordinator, Publicity >>>>> >>> >> > > CSI, NSIT Students' Branch >>>>> >>> >> > > NSIT, New Delhi, India >>>>> >>> >> >>>>> >>> >> > > -- >>>>> >>> >> > > You received this message because you are subscribed to the >>>>> Google >>>>> >>> >> > > Groups >>>>> >>> >> > > "Algorithm Geeks" group. >>>>> >>> >> > > To post to this group, send email to >>>>> [email protected]. >>>>> >>> >> > > To unsubscribe from this group, send email to >>>>> >>> >> > > [email protected]. >>>>> >>> >> > > For more options, visit this group at >>>>> >>> >> > >http://groups.google.com/group/algogeeks?hl=en. >>>>> >>> >> >>>>> >>> >> > -- >>>>> >>> >> > You received this message because you are subscribed to the >>>>> Google >>>>> >>> >> > Groups >>>>> >>> >> > "Algorithm Geeks" group. >>>>> >>> >> > To post to this group, send email to >>>>> [email protected]. >>>>> >>> >> > To unsubscribe from this group, send email to >>>>> >>> >> > [email protected]. >>>>> >>> >> > For more options, visit this group at >>>>> >>> >> >http://groups.google.com/group/algogeeks?hl=en. >>>>> >>> >> >>>>> >>> >> -- >>>>> >>> >> Arun Vish >>>>> >>> >> Graduate Student >>>>> >>> >> Department of Computer Science >>>>> >>> >> University of Southern California >>>>> >>> > >>>>> >>> > -- >>>>> >>> > You received this message because you are subscribed to the >>>>> Google >>>>> >>> Groups >>>>> >>> > "Algorithm Geeks" group. >>>>> >>> > To post to this group, send email to [email protected]. >>>>> >>> > To unsubscribe from this group, send email to >>>>> >>> > [email protected]. >>>>> >>> > For more options, visit this group at >>>>> >>> > http://groups.google.com/group/algogeeks?hl=en. >>>>> >>> > >>>>> >>> > >>>>> >>> >>>>> >>> -- >>>>> >>> You received this message because you are subscribed to the Google >>>>> Groups >>>>> >>> "Algorithm Geeks" group. >>>>> >>> To post to this group, send email to [email protected]. >>>>> >>> To unsubscribe from this group, send email to >>>>> >>> [email protected]. >>>>> >>> For more options, visit this group at >>>>> >>> http://groups.google.com/group/algogeeks?hl=en. >>>>> >>> >>>>> >>> >>>>> >> -- >>>>> >> You received this message because you are subscribed to the Google >>>>> Groups >>>>> >> "Algorithm Geeks" group. >>>>> >> To post to this group, send email to [email protected]. >>>>> >> To unsubscribe from this group, send email to >>>>> >> [email protected]. >>>>> >> For more options, visit this group at >>>>> >> http://groups.google.com/group/algogeeks?hl=en. >>>>> >> >>>>> > >>>>> > -- >>>>> > You received this message because you are subscribed to the Google >>>>> Groups >>>>> > "Algorithm Geeks" group. >>>>> > To post to this group, send email to [email protected]. >>>>> > To unsubscribe from this group, send email to >>>>> > [email protected]. >>>>> > For more options, visit this group at >>>>> > http://groups.google.com/group/algogeeks?hl=en. >>>>> > >>>>> > >>>>> >>>>> -- >>>>> You received this message because you are subscribed to the Google >>>>> Groups "Algorithm Geeks" group. >>>>> To post to this group, send email to [email protected]. >>>>> To unsubscribe from this group, send email to >>>>> [email protected]. >>>>> For more options, visit this group at >>>>> http://groups.google.com/group/algogeeks?hl=en. >>>>> >>>>> >>>> >>>> >>>> -- >>>> Nikhil Gupta >>>> Senior Co-ordinator, Publicity >>>> CSI, NSIT Students' Branch >>>> NSIT, New Delhi, India >>>> >>>> -- >>>> You received this message because you are subscribed to the Google >>>> Groups "Algorithm Geeks" group. >>>> To post to this group, send email to [email protected]. >>>> To unsubscribe from this group, send email to >>>> [email protected]. >>>> For more options, visit this group at >>>> http://groups.google.com/group/algogeeks?hl=en. >>>> >>> >>> -- >>> You received this message because you are subscribed to the Google Groups >>> "Algorithm Geeks" group. >>> To post to this group, send email to [email protected]. >>> To unsubscribe from this group, send email to >>> [email protected]. >>> For more options, visit this group at >>> http://groups.google.com/group/algogeeks?hl=en. >>> >> >> >> >> -- >> Nikhil Gupta >> Senior Co-ordinator, Publicity >> CSI, NSIT Students' Branch >> NSIT, New Delhi, India >> >> -- >> You received this message because you are subscribed to the Google Groups >> "Algorithm Geeks" group. >> To post to this group, send email to [email protected]. >> To unsubscribe from this group, send email to >> [email protected]. >> For more options, visit this group at >> http://groups.google.com/group/algogeeks?hl=en. >> > > -- > You received this message because you are subscribed to the Google Groups > "Algorithm Geeks" group. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]. > For more options, visit this group at > http://groups.google.com/group/algogeeks?hl=en. > -- Nikhil Gupta Senior Co-ordinator, Publicity CSI, NSIT Students' Branch NSIT, New Delhi, India -- You received this message because you are subscribed to the Google Groups "Algorithm Geeks" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/algogeeks?hl=en.
