904:| // //thus: // // offset == alignment*(q+1) // offset%alignment == 0 //  ; return offset; } align = alignof(Type)//alignment of member for i=1 to N  ; size = offset+sizeof(Type) //Size of TheStructure truncated to just i members. for i=1 to N  ; offset = 0 //offset from start of TheStructure to start of member  ; offset = aligned_offset(size,align) //If i<N // the offset from the start of TheStructure to the start of // member //else if i==N // the offset from the start of TheStructure to the start of // the next contiguous TheStructure. IOW, this is // sizeof(TheStructure). for i=1 to N  ;
534:. Since the software was not written with such restrictions in mind, designers had to set a bit in the O/S to enable non-aligned data. However since this bit was masked with other flags, it was impossible to keep the O/S from faulting on non-aligned data when other modules used the other flags. This may have been a major factor in abandoning Windows NT on non-Intel processors as they failed as platforms for hosting common Windows applications and one more reason for the baffling dominance of the x86 architecture over technologically elegant rivals. "
891:// // r == a - n*floor(a/n) // 0 <= r < n // //when replaced with the corresponding variable names //used here, become: // // q == floor(size/alignment) // remainder == size - alignment*q // 0 <= remainder < alignment // //These assertions are illustrated by the following //number-line diagram: // // |<------- size -----------------------: -->
241:
71:
53:
164:
143:
22:
898:| // //thus: // // offset == alignment*q // offset%alignment == 0 // Â : size+alignment-remainder //In this case, the above number-line diagram //needs to be augmented to become: // // |<------- size -----------------------: -->
1633:
1288:
keyword, which allowed the programmer to choose whether to pack their data, trading memory for performance. This was almost always used in the context of strings. I recall writing a version of Conway's LIFE on the VAX which stored the board in a character array which ran significantly faster if you didn't PACK it.
884:
unsigned alignof(SomeType) //Purpose: // Returns the alignment of type, SomeType. // Implementation defined. Â ; unsigned sizeof(SomeType) //Purpose // Returns the size of type, SomeType. // Implementation defined. Â ; unsigned aligned_offset ( unsigned size ,
591:
I'm a 4th year Comp Sci student sitting a PhD next year...and don't think the description here is clear enough. It really doesn't explain it in any useful way. I think a diagram, an analogy, or something similar would help. In its current state it's no use to anyone who isn't a computer expert-I come
1448:
without sub-word addressing, even a 16-bit word aligned on a 32-bit boundary would require, at minimum, masking after the load unless the generated code guarantees that the padding is in the upper bits of the 32-bit word containing the 16-bit quantity and that the upper bits are either zero-extended
1287:
If the original data is not packed, and you wish to store it packed, you need to convert from one form to another. Folding the data together is generally a multiple-instruction task, while the unfolding is generally simpler (often an AND followed by some shifts). This is why Pascal included a PACKED
497:
processors which are designed to maximize raw performance is to require data to loaded or stored on a word boundary. So though memory is commonly addressed by 8 bit bytes, loading a 32 bit integer or 64 bit floating point number would be required to be start at every 64 bits on a 64 bit machine. The
1353:
there's a difference between the case where there's a byte of padding after the 8-bit field and the case where the structure is "packed" and there's no padding byte - either the access to the 16-bit fields might be slowed down due to the fields being unaligned or the access might not even be doable
1538:
For example, on a 32-bit machine, a data structure containing a 16-bit value followed by a 32-bit value could have 16 bits of padding between the 16-bit value and the 32-bit value to align the 32-bit value on a 32-bit boundary. Alternatively, one can pack the structure, omitting the padding, which
1331:
If you have a 32-bit machine that 1) supports byte addressing and 2) has a "load 16-bit word" instruction (or, for CISC, also has arithmetic/logical instructions that support 16-bit in-memory operands), if you have a structure, aligned on a 32-bit boundary with a 32-bit field, followed by a 16-bit
1165:
Were the 36-bit machines of the 1950's 36-bit because the character codes were 6-bit, or were they 36-bit for other reasons, such as "36-bit floating-point numbers are a good size", or just following in the footsteps of other 36-bit machines, and 6-bit character codes chosen because they were "big
1089:
ARM has (historically, at least) interesting behaviour here. While single-register stores and multiple-register loads and stores have been forcibly word-aligned, single-register loads may be special in that one word is read, but the lowest two bits of the address cause (for little-endian) a rotate
678:
The cited source for this section doesn't support the information presented. The linked MSDN article just talks about "default alignment" derived from member type, e.g. 4 bytes for an int. This is very different from /Zp packsize which basically wraps whole source file in #pragma pack(push, N) ...
651:
I've read the article and, well I agree with the opinions above, but, in the introduction there's a part that says '...due to how the CPU handles memory'. Well if you Google that you're going to come up with thousands of hits... how 'bout a link or something that could explain the part of "how the
1160:
The widespread use of packing on 6 bit character codes in the mainframe era led to machines with word lengths that were multiples of 6 bits; 36-bit machines were particularly common. The introduction of ASCII led to new designs with word lengths that are multiples of 8 bits, 7 bits of code and a
843:
Yes I totally agree. And I have tested an example with a double to make sure that the structure was not sized a multiple of 8. As you say there is a logic error in any case since the largest element may be an arbitrarily sized array. I have made a change to replace 'least common multiple' with
1058:
Although use of "packed" structures is most frequently used to conserve memory space, it may also be used to format a data structure for transmission using a standard protocol. However in this usage, care must also be taken to ensure that the values of the struct members are stored with the
262:
498:
processor could flag a fault if it were asked to load a number which was not on such a boundary, or call a routine which would effectively figure out which word or words contained the data and extract the equivalent value. This caused difficulty when the team from
1332:
field, followed by another 16-bit field, the exact same code sequence would be used to access the first 16-bit field and the second 16-bit field, so I'm not seeing where accesses to the second field would require more instructions than accesses to the first field.
1063:
While it is true that endianness must be addressed when transmitting data across a network, it is not directly related to data structure alignment. The use of different data structure alignment techniques doesn't change the requirements of endianness correctness.
734:) requires 2 arguments; hence, the cited sentence is confusing because it implies lcm is unary. It's also probably wrong because it makes no mention of the alignment of the largest structure member, it only mentions the size of the largest structure member.
492:
I replaced this, and left out the specific programs mentioned because I could not find any mention of trouble porting those specific programs: "A common problem in computer programming is called word alignement. One way to increase performance, especially in
1248:, which generally means that the data's memory address is a multiple of the data size. For instance, in a 32-bit architecture, the data may be aligned if the data is stored in four consecutive bytes and the first byte lies on a 4-byte boundary.
887:=0 // offset == alignment*q // size <= offset < size+alignment //Requires: // 1 <= alignment { unsigned remainder = size%alignment //The following assertions from reference: //
613:
I agree, one thing which struck is why is the word datum used instead of data? I've seen the word used before but needed to look it up, only to see that it's apparantly just a synonym to data, which is significantly more well understod.
1067:
I suggest that the final sentence in this section is removed. It could also be reworded in a way that states that integer data sent across the wire, regardless of padding/alignment, requires endianness handling for portability.
913:
align //alignment for TheStructure constrained_by: (m*align+offset)Â % align == 0 //member is properly aligned //This constraint is labelled the "member_constraint". , for i=1 to N , for any unsigned m:
844:
multiple and corrected my change to your correct interpretation of the largest alignment of the members not 'the platform' which I asserted initially. I have added 2 (compiled and tested) examples which should clear this up.
1476:
example, which applies to many machines with byte addressing, as well as those without, would be a case with a structure with a 16-bit field followed by a 32-bit field. On a 32-bit word-addressed processor (e.g.,
1001:
To satisfy all of soln,soln...soln, align has to be in the intersection of soln,soln...soln. IOW, align has to be a multiple of all of align,align...align. The least solution satisfying this constraint is the
894:| // Â ; unsiged offset = remainder == 0 Â ? size //In this case, the number-line diagram becomes: // // |<------- size -----: -->
1485:-addressed processor, it means you either 1) don't get a performance hit, if accessing a 32-bit word that's only on a 16-bit boundary is allowed or 2) don't have to do several instructions, if that's
1272:
In what implementations is accessing a 16-bit value that's aligned on a 16-bit boundary, but not aligned on a 32-bit boundary, slower than accessing a 16-bit value aligned on a 32-bit boundary?
915:=0 (align+offset)Â % align == 0 //If two TheStructure's are contiguous in memory, //the second is properly aligned. //This constraint is labelled the "structure_constraint".
286:
426:
343:
281:
1652:
1481:), padding after the 16-bit field means you don't have to do masking (and possibly shifting) to access either the 16-bit word or the 32-bit word following it; on a 32-bit
1701:
214:
204:
1206:
So on which 36-bit machines was 6-bit BCD (rather than 4-bit BCD) used - and why? You can pack more 4-bit digits than 6-bit digits into a word. (That's "BCD" as in "
1124:
Does it mean the OS? the CPU? the memory controller? Who exactly is responsible for the decision to read memory in blocks of bytes, and why is it still a concern?
1706:
1696:
1686:
119:
1516:
OK, I went with the 16-bit field followed by a 32-bit field as the example, following the previous edit by somebody who apparently doesn't like disputed text.
1100:
Combined with MOV instructions making use of the barrel shifter, this was widely exploited for sign extension of 8-bit values and reading of 16-bit values.
180:
773:
The compiler always assumes that an instance of foo will start at an address aligned to the most strict alignment requirement of all of foo’s members,
388:
125:
652:
CPU handles memory" that it's really important on the "Structure padding"? thanks. (I would do it myself but my knowledge doesn't extent that long :S)
1681:
362:
1140:
227:
171:
148:
1059:
endianness required by the protocol (often network byte order), which may be different from the endianness used natively by the host machine.
686:
599:
451:
719:
number of bytes required that the total size of the structure should be a least common multiple of the size of a largest structure member
659:
554:
95:
1553:
621:
334:
782:
number of bytes required that the total size of the structure should be a multiple of the largest alignment of the structure's members
1643:
1625:
1260:
between structure elements or after the last element of a structure. For example, in a 32-bit machine storing a 16-bit value one can
315:
1256:
refers to aligning elements according to their natural alignment. To ensure natural alignment, it may be necessary to insert some
832:
1691:
407:
78:
58:
804:
749:
then this sentence would require the A::last to have 999 padding characters after it. That's wrong, as shown by the program:
592:
pretty close, and I can't follow it. It needs to be much, much, simpler at first, instead of jumping right into details.
1609:
945:=1. IOW, the set of solutions for align for member_constraint for 1<i<=N is: soln = {j*align|unsigned j: -->
372:
253:
33:
776:
which suggests that the aforementioned
Typical_alignment_of_C_structs_on_x86 section sentence should be modified to:
765:
382:
296:
518:
architecture had no such restrictions. It would also cause difficulties in porting
Microsoft Office to Windows NT on
1033:
where 2**k is 2 raised to the k-th power, then max can be used in place of lcm since lcm(2**k,2**(k+n)) = 2**(k+n).
537:
I hope to have provided sufficient background, but I think the article still needs some work. (but I need to sleep)
1136:
417:
179:
related articles on
Knowledge. If you would like to participate, please visit the project page, where you can join
1397:
1314:
1293:
1193:
603:
444:
1211:
708:
690:
663:
558:
21:
1557:
625:
1241:
1132:
1309:
IIRC TurboPascal did something additional here, but I no longer recall what... something about bitpacked?
1040:
849:
828:
91:
1588:
I think _Alignas is relevant here. Maybe someone more knowledgeable than me in C could edit the article?
753:
int main(void) { std::cout<<"sizeof(A)="<<sizeof(A)<<"\n"; return 0; }
1232:
On a 32-bit architecture, would a 16-bit value not aligned on a 32-bit boundary be accessed more slowly?
1003:
353:
39:
927:=1. IOW, the set of solutions for align for member_constraint is: soln = {j*align|unsigned j: -->
845:
503:
1597:
1573:
1549:
1521:
1498:
1393:
1359:
1310:
1289:
1277:
1264:
out the value with an additional 16-bits to make it naturally align to 32 bits. Alternately, one can
1219:
1207:
1189:
1171:
1128:
1036:
824:
820:
682:
655:
617:
595:
499:
1621:
1268:
two 16-bit values into a 32-bit space, which may lead to slower access but use half as much memory.
573:
1244:
in modern computer hardware performs reads and writes to memory most efficiently when the data is
94:
on
Knowledge. If you would like to participate, please visit the project page, where you can join
1647:
1071:
811:
The alignment of a non-packed structure is the maximum alignment required of any of its fields.
1613:
519:
272:
1605:
886:= size such that // offset%alignment == 0. //Ensures: // for some unsigned q: -->
791:
324:
176:
1569:
1517:
1494:
1355:
1304:
1273:
1215:
1183:
1167:
1107:
1075:
866:
struct TheStructure { Type member; Type member; ... Type member; };
569:
398:
240:
263:
Requested articles/Applied arts and sciences/Computer science, computing, and
Internet
1675:
1663:
1478:
1121:
For example, what exactly is it referring to when it says the "computer" is doing X?
798:
Structures and unions assume the alignment of their most strictly aligned component.
637:
1667:
1592:
1577:
1561:
1525:
1502:
1401:
1392:. Or perhaps your concern is that the example is 32-bits and not some other number?
1363:
1318:
1297:
1281:
1223:
1197:
1175:
1144:
1111:
1079:
1044:
853:
836:
694:
667:
640:
629:
607:
577:
562:
543:
636:
I rewrote the introduction, added a short example and removed the {{context}} tag.
1389:
944:=0 Any solution has the form: align == j*align , for any unsigned j: -->
926:=0 Any solution has the form: align == j*align , for any unsigned j: -->
1601:
1422:"Lots of machines lacked sub-word addressing" Yes, I'm quite aware of that, but:
939:=0 After substituting in Ensures: assertion from aligned_offset, this becomes:
938:(m*align+aligned_offset(size,align)Â % align == 0 , for any unsigned m: -->
70:
52:
1152:
Multiple-of-6 and multiple-of-8 word lengths a consequence of character sizes?
1103:
903:| |<-- // |<----- offset ---------------------------: -->
1385:
967:
After substituting in
Ensures: assertion from aligned_offset, this becomes:
305:
87:
163:
142:
1010:
1658:
1653:
Knowledge:Redirects for discussion/Log/2023 July 21 § Padding (computing)
1093:
ADD R0,PC,#12 MVN R1,#&FFÂ ; &FFFFFF00 STR R1, LDR R0, MOV PC,R14
885:
unsigned alignment ) //Purpose: // Returns minimum offset : -->
859:
calculation of whole structure alignment and size and all member paddings
540:
511:
83:
1632:
1381:
737:
Hence, according to this sentence, if the largest structure member is:
523:
931:
For the particular cases when 1<i<=N, the member_constraint is:
752:
struct A { char carray; char last; }; #include <iostream: -->
568:
In the section Data_Structure_Padding, the article talks about that.
553:
What is a packed array? It redirects here, but I could not find it.
888:
1650:. Readers of this page are welcome to comment on this redirect at
1490:
961:
after substituting in the definition of offset, this becomes:
935:=0 After substituting in the definition of offset, this becomes:
922:=0 After substituting in the definition of offset, this becomes:
507:
515:
494:
489:
The page gives no reason why this practise is used. --Anonymous
907:
The only unknown in the above is align; hence, the problem is:
899:| // |<-- remainder --: -->
780:
It is important to note that the last member is padded with the
717:
It is important to note that the last member is padded with the
902:| // alignment-remainder --: -->
531:
527:
381:
Find pictures for the biographies of computer scientists (see
15:
1188:
Depends on the platform. 6-bit BCD was also a common reason.
942:(m*align+align*q)Â % align == 0 , for any unsigned m: -->
918:
For the particular case when 1==i, the member_constraint is:
896:|<-- remainder // |<-- alignment*q ---: -->
892:| // |<-- remainder --: -->
1354:
with a single instruction if natural alignment is required.
949:
Thus, there's a sequence of solutions, one for each member:
934:(m*align+offset)Â % align == 0 , for any unsigned m: -->
921:(m*align+offset)%align == 0 , for any unsigned m: -->
986:
To handle the boundary case when N==0(no members), define:
970:(m*align+align*q)Â % align == 0 , for any unsigned m: -->
1345:
If you replace the 32-bit field in that structure with an
1212:
a character set called BCD that has more than digits in it
1018:
alignof(TheStructure) = foldl lcm align ,align,...,align]
1539:
may lead to slower access, but uses half as much memory.
1054:
In the section on padding, the following text is given:
1024:
alignof(TheStructure) = foldl lcm align == align == 1.
1638:
1542:
Am I mislead or should it read ``three quarters as much
978:(align*(m+q))Â % align == 0 , for any unsigned m: -->
994:
So, there are n+1 partial solutions, all of the form:
814:
Both claims support the modification suggested above.
925:(m*align)%align == 0 , for any unsigned m: -->
1646:
to determine whether its use and function meets the
863:
Given the following pseudo-c++-code data structure:
175:, a collaborative effort to improve the coverage of
82:, a collaborative effort to improve the coverage of
287:Computer science articles needing expert attention
124:This article has not yet received a rating on the
1593:https://en.cppreference.com/w/c/language/_Alignas
1380:Lots of machines lacked sub-word addressing, the
983:which is obviously true as long as 0 < align.
1158:
1027:In case all of the alignments are of the form:
964:(align+aligned_offset(size,align)Â % align == 0
897:| // |<----- offset -----: -->
701:least common multiple requires at least 2 args
427:WikiProject Computer science/Unreferenced BLPs
1384:'s for instance. It's not like this issue is
900:| // |<-- alignment*q ---: -->
8:
893:| // |<-- alignment*q ---: -->
344:Computer science articles without infoboxes
282:Computer science articles needing attention
19:
1547:
1117:The article is too vague to be very useful
989:align = 1 soln = {j*align|unsigned j: -->
895:| // --: -->
248:Here are some tasks awaiting attention:
222:
137:
47:
1702:Mid-importance Computer science articles
889:http://en.wikipedia.org/Modulo_operation
139:
49:
975:which, after simplification, becomes:
189:Knowledge:WikiProject Computer science
1707:WikiProject Computer science articles
1697:Start-Class Computer science articles
1687:Unknown-importance Computing articles
709:Typical_alignment_of_C_structs_on_x86
192:Template:WikiProject Computer science
7:
808:makes a similar claim on page 3-38:
730:the least common multiple operator (
169:This article is within the scope of
76:This article is within the scope of
1030:align = 2**n, for some unsigned n,
746:struct A{ char carray, char last};
647:..due to how the CPU handles memory
38:It is of interest to the following
1166:enough" and 6 was a factor of 36?
1156:The article currently claims that
943:=0 , for some unsigned q: -->
363:Timeline of computing 2020–present
14:
990:=1} = {j|unsigned j: -->
881:, and the following definitions:
743:and the complete structure were:
389:Computing articles needing images
1631:
1006:of align,align,align,...,align.
979:=0 , for some unsigned q: -->
971:=0 , for some unsigned q: -->
674:Default packing and #pragma pack
239:
162:
141:
69:
51:
20:
1656:until a consensus is reached.
1388:, and it is one of the reasons
1208:binary coding of decimal digits
1096:results in R0 = &00FFFFFF.
997:soln = {j*align|unsigned j: -->
713:section contains the sentence:
209:This article has been rated as
104:Knowledge:WikiProject Computing
1682:Start-Class Computing articles
1503:17:10, 10 September 2019 (UTC)
1402:13:51, 10 September 2019 (UTC)
1112:00:58, 16 September 2012 (UTC)
1090:right by 8Ă— their value, e.g.
955:For the structure_constraint:
766:cxx-data-alignment-portability
107:Template:WikiProject Computing
1:
1614:14:00, 13 December 2020 (UTC)
1578:22:17, 11 November 2020 (UTC)
1562:21:47, 11 November 2020 (UTC)
1364:19:54, 9 September 2019 (UTC)
1319:19:28, 9 September 2019 (UTC)
1298:19:26, 9 September 2019 (UTC)
1282:18:52, 5 September 2019 (UTC)
1224:20:03, 9 September 2019 (UTC)
1198:19:30, 9 September 2019 (UTC)
1080:13:09, 22 November 2011 (UTC)
1045:13:05, 17 February 2011 (UTC)
958:(align+offset)Â % align == 0
901:|<---- alignment ----: -->
837:13:27, 16 February 2011 (UTC)
443:Tag all relevant articles in
183:and see a list of open tasks.
98:and see a list of open tasks.
1526:18:52, 20 January 2020 (UTC)
1236:The article currently says:
788:In addition, the reference:
668:01:31, 20 January 2009 (UTC)
563:15:52, 30 January 2008 (UTC)
452:WikiProject Computer science
228:WikiProject Computer science
172:WikiProject Computer science
1176:17:59, 5 October 2017 (UTC)
695:16:14, 4 October 2010 (UTC)
383:List of computer scientists
1723:
1145:08:15, 23 March 2016 (UTC)
608:11:53, 27 April 2008 (UTC)
215:project's importance scale
126:project's importance scale
1668:20:23, 21 July 2023 (UTC)
854:22:50, 18 June 2011 (UTC)
641:22:08, 28 July 2008 (UTC)
587:Too verbose/jargon filled
578:14:07, 3 March 2008 (UTC)
445:Category:Computer science
221:
208:
195:Computer science articles
157:
123:
64:
46:
1644:redirects for discussion
1626:Redirects for discussion
630:13:31, 7 June 2008 (UTC)
544:07:03, 29 May 2006 (UTC)
447:and sub-categories with
1583:
869:composed of N members:
762:In addition, the page:
1692:All Computing articles
1584:Mention C11's _Alignas
1163:
408:Computer science stubs
92:information technology
28:This article is rated
1210:" rather than as in "
1050:Packing vs endianness
1004:least common multiple
952:soln, soln, ... soln
801:Also, the reference:
79:WikiProject Computing
1535:The article states:
1021:In case N==0, then:
998:=1} for i=0 to N
795:claims, on page 13:
679:#pragma pack(pop).
226:Things you can help
1648:redirect guidelines
1642:has been listed at
1639:Padding (computing)
1622:Padding (computing)
1489:allowed (e.g., on
1009:In summary, using
110:Computing articles
34:content assessment
1600:comment added by
1564:
1552:comment added by
1449:or sign-extended.
1246:naturally aligned
1148:
1131:comment added by
840:
823:comment added by
756:whose output is:
685:comment added by
658:comment added by
632:
620:comment added by
610:
598:comment added by
482:
481:
478:
477:
474:
473:
470:
469:
466:
465:
136:
135:
132:
131:
1714:
1666:
1661:
1641:
1635:
1616:
1308:
1187:
1147:
1133:Bumblebritches57
1125:
872:member...member
839:
817:
697:
670:
615:
593:
504:Twin Spreadsheet
456:
450:
325:Computer science
254:Article requests
243:
236:
235:
223:
197:
196:
193:
190:
187:
186:Computer science
177:Computer science
166:
159:
158:
153:
149:Computer science
145:
138:
112:
111:
108:
105:
102:
73:
66:
65:
55:
48:
31:
25:
24:
16:
1722:
1721:
1717:
1716:
1715:
1713:
1712:
1711:
1672:
1671:
1662:
1657:
1637:
1629:
1595:
1586:
1533:
1394:Maury Markowitz
1390:C exists at all
1311:Maury Markowitz
1302:
1290:Maury Markowitz
1234:
1190:Maury Markowitz
1181:
1154:
1126:
1119:
1094:
1087:
1052:
1031:
1025:
1019:
999:
992:
981:
973:
965:
959:
953:
947:
940:
936:
929:
923:
916:
911:
905:
879:
873:
867:
861:
818:
812:
806:
799:
793:
786:
774:
768:
760:
759:sizeof(A)=1001
754:
747:
741:
728:
723:
703:
687:195.146.153.234
680:
676:
653:
649:
600:130.209.241.193
589:
551:
500:Mosaic Software
487:
462:
459:
454:
448:
436:Project-related
431:
412:
393:
367:
348:
329:
310:
291:
267:
194:
191:
188:
185:
184:
151:
109:
106:
103:
100:
99:
32:on Knowledge's
29:
12:
11:
5:
1720:
1718:
1710:
1709:
1704:
1699:
1694:
1689:
1684:
1674:
1673:
1628:
1618:
1585:
1582:
1581:
1580:
1532:
1529:
1514:
1513:
1512:
1511:
1510:
1509:
1508:
1507:
1506:
1505:
1461:
1460:
1459:
1458:
1457:
1456:
1455:
1454:
1453:
1452:
1451:
1450:
1446:
1432:
1431:
1430:
1429:
1428:
1427:
1426:
1425:
1424:
1423:
1411:
1410:
1409:
1408:
1407:
1406:
1405:
1404:
1371:
1370:
1369:
1368:
1367:
1366:
1338:
1337:
1336:
1335:
1334:
1333:
1324:
1323:
1322:
1321:
1270:
1269:
1254:Data alignment
1250:
1249:
1233:
1230:
1229:
1228:
1227:
1226:
1201:
1200:
1153:
1150:
1118:
1115:
1099:
1092:
1086:
1083:
1051:
1048:
1029:
1023:
1017:
1015:
996:
988:
977:
969:
963:
957:
951:
941:
937:
933:
924:
920:
912:
909:
883:
877:
871:
865:
860:
857:
810:
803:
797:
790:
778:
772:
764:
758:
751:
745:
739:
727:
725:However, from
715:
702:
699:
675:
672:
660:190.201.223.72
648:
645:
644:
643:
588:
585:
583:
581:
580:
555:85.145.103.163
550:
547:
486:
483:
480:
479:
476:
475:
472:
471:
468:
467:
464:
463:
461:
460:
458:
457:
440:
432:
430:
429:
423:
413:
411:
410:
404:
394:
392:
391:
386:
378:
368:
366:
365:
359:
349:
347:
346:
340:
330:
328:
327:
321:
311:
309:
308:
302:
292:
290:
289:
284:
278:
268:
266:
265:
259:
247:
245:
244:
232:
231:
219:
218:
211:Mid-importance
207:
201:
200:
198:
181:the discussion
167:
155:
154:
152:Mid‑importance
146:
134:
133:
130:
129:
122:
116:
115:
113:
96:the discussion
74:
62:
61:
56:
44:
43:
37:
26:
13:
10:
9:
6:
4:
3:
2:
1719:
1708:
1705:
1703:
1700:
1698:
1695:
1693:
1690:
1688:
1685:
1683:
1680:
1679:
1677:
1670:
1669:
1665:
1660:
1655:
1654:
1649:
1645:
1640:
1636:The redirect
1634:
1627:
1623:
1619:
1617:
1615:
1611:
1607:
1603:
1599:
1594:
1589:
1579:
1575:
1571:
1567:
1566:
1565:
1563:
1559:
1555:
1554:88.130.51.182
1551:
1545:
1540:
1536:
1530:
1528:
1527:
1523:
1519:
1504:
1500:
1496:
1493:processors).
1492:
1488:
1484:
1480:
1479:Stanford MIPS
1475:
1471:
1470:
1469:
1468:
1467:
1466:
1465:
1464:
1463:
1462:
1447:
1445:few do today;
1444:
1443:
1442:
1441:
1440:
1439:
1438:
1437:
1436:
1435:
1434:
1433:
1421:
1420:
1419:
1418:
1417:
1416:
1415:
1414:
1413:
1412:
1403:
1399:
1395:
1391:
1387:
1383:
1379:
1378:
1377:
1376:
1375:
1374:
1373:
1372:
1365:
1361:
1357:
1352:
1348:
1344:
1343:
1342:
1341:
1340:
1339:
1330:
1329:
1328:
1327:
1326:
1325:
1320:
1316:
1312:
1306:
1301:
1300:
1299:
1295:
1291:
1286:
1285:
1284:
1283:
1279:
1275:
1267:
1263:
1259:
1255:
1252:
1251:
1247:
1243:
1239:
1238:
1237:
1231:
1225:
1221:
1217:
1213:
1209:
1205:
1204:
1203:
1202:
1199:
1195:
1191:
1185:
1180:
1179:
1178:
1177:
1173:
1169:
1162:
1157:
1151:
1149:
1146:
1142:
1138:
1134:
1130:
1122:
1116:
1114:
1113:
1109:
1105:
1101:
1097:
1091:
1084:
1082:
1081:
1077:
1073:
1069:
1065:
1061:
1060:
1055:
1049:
1047:
1046:
1042:
1038:
1034:
1028:
1022:
1016:
1013:
1012:
1011:haskell foldl
1007:
1005:
995:
987:
984:
976:
968:
962:
956:
950:
932:
919:
908:
890:
882:
876:
870:
864:
858:
856:
855:
851:
847:
841:
838:
834:
830:
826:
822:
815:
809:
805:
802:
796:
792:
789:
785:
781:
777:
771:
767:
763:
757:
750:
744:
740:char carray;
738:
735:
733:
726:
722:
718:
714:
711:
710:
706:
700:
698:
696:
692:
688:
684:
673:
671:
669:
665:
661:
657:
646:
642:
639:
635:
634:
633:
631:
627:
623:
622:195.84.66.198
619:
611:
609:
605:
601:
597:
586:
584:
579:
575:
571:
567:
566:
565:
564:
560:
556:
548:
546:
545:
542:
538:
535:
533:
529:
525:
521:
517:
513:
509:
505:
502:ported their
501:
496:
490:
484:
453:
446:
442:
441:
439:
437:
433:
428:
425:
424:
422:
420:
419:
414:
409:
406:
405:
403:
401:
400:
395:
390:
387:
384:
380:
379:
377:
375:
374:
369:
364:
361:
360:
358:
356:
355:
350:
345:
342:
341:
339:
337:
336:
331:
326:
323:
322:
320:
318:
317:
312:
307:
304:
303:
301:
299:
298:
293:
288:
285:
283:
280:
279:
277:
275:
274:
269:
264:
261:
260:
258:
256:
255:
250:
249:
246:
242:
238:
237:
234:
233:
229:
225:
224:
220:
216:
212:
206:
203:
202:
199:
182:
178:
174:
173:
168:
165:
161:
160:
156:
150:
147:
144:
140:
127:
121:
118:
117:
114:
97:
93:
89:
85:
81:
80:
75:
72:
68:
67:
63:
60:
57:
54:
50:
45:
41:
35:
27:
23:
18:
17:
1651:
1630:
1624:" listed at
1596:— Preceding
1590:
1587:
1548:— Preceding
1543:
1541:
1537:
1534:
1515:
1486:
1482:
1473:
1350:
1346:
1271:
1265:
1261:
1257:
1253:
1245:
1235:
1164:
1159:
1155:
1127:— Preceding
1123:
1120:
1102:
1098:
1095:
1088:
1070:
1066:
1062:
1057:
1056:
1053:
1035:
1032:
1026:
1020:
1014:
1008:
1000:
993:
985:
982:
974:
966:
960:
954:
948:
930:
917:
906:
880:
878:Type...Type
874:
868:
862:
846:Kerfuffle090
842:
819:— Preceding
816:
813:
807:
800:
794:
787:
783:
779:
775:
769:
761:
755:
748:
742:
736:
731:
729:
724:
720:
716:
712:
707:
704:
677:
650:
612:
590:
582:
552:
549:Packed array
539:
536:
514:. The Intel
491:
488:
435:
434:
418:Unreferenced
416:
415:
397:
396:
371:
370:
352:
351:
333:
332:
314:
313:
295:
294:
271:
270:
252:
251:
210:
170:
77:
40:WikiProjects
1544:in the end?
1531:Half vs 3/4
1161:parity bit.
681:—Preceding
654:—Preceding
616:—Preceding
594:—Preceding
30:Start-class
1676:Categories
1570:Guy Harris
1518:Guy Harris
1495:Guy Harris
1356:Guy Harris
1305:Guy Harris
1274:Guy Harris
1216:Guy Harris
1184:Guy Harris
1168:Guy Harris
1037:Cppljevans
875:of types:
825:Cppljevans
570:0x6adb015
306:Computing
101:Computing
88:computing
84:computers
59:Computing
1610:contribs
1598:unsigned
1550:unsigned
1141:contribs
1129:unsigned
833:contribs
821:unsigned
770:claims:
683:unsigned
656:unsigned
638:Virtlink
618:unsigned
596:unsigned
512:Atari ST
485:untitled
354:Maintain
297:Copyedit
1568:Fixed.
1386:unknown
1382:HP 2100
1349:field,
1258:padding
524:PowerPC
506:to the
335:Infobox
273:Cleanup
213:on the
1602:Abd.nh
1474:better
910:Find:
510:based
316:Expand
90:, and
36:scale.
1491:SPARC
1347:8-bit
1104:Dsalt
1072:Clc38
946:= 1}
928:= 1}
508:68000
399:Stubs
373:Photo
230:with:
1606:talk
1591:See
1574:talk
1558:talk
1546:--
1522:talk
1499:talk
1483:byte
1398:talk
1360:talk
1351:then
1315:talk
1294:talk
1278:talk
1266:pack
1240:The
1220:talk
1214:".)
1194:talk
1172:talk
1137:talk
1108:talk
1076:talk
1041:talk
991:=1}
850:talk
829:talk
705:The
691:talk
664:talk
626:talk
604:talk
574:talk
559:talk
530:and
526:for
522:and
520:MIPS
516:8086
495:RISC
1659:Jay
1487:not
1262:pad
1242:CPU
1085:ARM
980:=0
972:=0
914:-->
732:lcm
541:Aij
532:IBM
528:NEC
205:Mid
120:???
1678::
1664:đź’¬
1612:)
1608:•
1576:)
1560:)
1524:)
1501:)
1472:A
1400:)
1362:)
1317:)
1296:)
1280:)
1222:)
1196:)
1174:)
1143:)
1139:•
1110:)
1078:)
1043:)
852:)
835:)
831:•
693:)
666:)
628:)
606:)
576:)
561:)
455:}}
449:{{
86:,
1620:"
1604:(
1572:(
1556:(
1520:(
1497:(
1396:(
1358:(
1313:(
1307::
1303:@
1292:(
1276:(
1218:(
1192:(
1186::
1182:@
1170:(
1135:(
1106:(
1074:(
1039:(
848:(
827:(
784:.
721:.
689:(
662:(
624:(
602:(
572:(
557:(
438::
421::
402::
385:)
376::
357::
338::
319::
300::
276::
257::
217:.
128:.
42::
Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.