Knowledge

Talk:Data structure alignment

Source đź“ť

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::

Index


content assessment
WikiProjects
WikiProject icon
Computing
WikiProject icon
WikiProject Computing
computers
computing
information technology
the discussion
???
project's importance scale
WikiProject icon
Computer science
WikiProject icon
WikiProject Computer science
Computer science
the discussion
Mid
project's importance scale
WikiProject Computer science

Article requests
Requested articles/Applied arts and sciences/Computer science, computing, and Internet
Cleanup
Computer science articles needing attention
Computer science articles needing expert attention
Copyedit
Computing

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.

↑