[ CnUnix ] in KIDS ±Û ¾´ ÀÌ(By): guest (°Ô½ºÆ®) <211.37.187.119> ³¯ Â¥ (Date): 2002³â 3¿ù 15ÀÏ ±Ý¿äÀÏ ¿ÀÈÄ 05½Ã 13ºÐ 37ÃÊ Á¦ ¸ñ(Title): [Q] sizeof ¹®Á¦... #include struct ll { uint64_t a; uint32_t b; }; ÀÌ sizeof(struct ll)Çغ¸¸é linux¿¡¼­´Â 12°¡ ³ª¿À´Âµ¥ ¼Ö¶ó¸®½º¿¡¼­´Â 16ÀÌ ³ª¿À´Âµ¥ ¿Ö ±×·±°Ç°¡¿ä? ±×¸®°í uint64_tÀÇ µ¥ÀÌŸ¸¦ networkÀ» ÅëÇØ ¹ÞÀ» ¶§ ¼¼±×ÆúÆ®³ª´øµ¥ uint64_tÀÇ µ¥ÀÌŸ¸¦ networkÀ» ÅëÇØ Àü¼ÛÇÒ ¶§ ÁÖÀÇÇÒ Á¡ÀÌ ÀÖ³ª¿ä? [ CnUnix ] in KIDS ±Û ¾´ ÀÌ(By): gaia (¾Æ¹«°³) ³¯ Â¥ (Date): 2002³â 3¿ù 15ÀÏ ±Ý¿äÀÏ ¿ÀÈÄ 05½Ã 23ºÐ 19ÃÊ Á¦ ¸ñ(Title): Re: [Q] sizeof ¹®Á¦... ÀüÀÚÀÇ °æ¿ì´Â.. linux´Â 32bit machine ÀÌ°í.. solaris´Â 64bit machine ÀÌ¶ó¼­ ±×·¸½À´Ï´Ù. struct { 64bit, 32bit } ÇßÀ» ¶§ 32bit machineÀº 32bit 3°³ ·Î ÀâÈ÷Áö¸¸ 64bit ·Î Çߴ¶§´Â 64bit 2°³·Î ÀâÈü´Ï´Ù. ´ÜÀ§°¡ 64bitÀε¥ 1.5°³·Î ÀâÀ» ¼ö´Â ¾ø°ÚÁÒ? µÎ¹ø° °Å´Â ¿øÇϽô ´äÀº ¾Æ´Ï½Ã°ÚÁö¸¸.. ±×¸®°í Network Programming ÇÒ¶§´À 64bit Àß ¾È¾²´Âµ¥.. ²À ¾²¼Å¾ß µÇ¸é union { char a[8]; uint64 b; } ·ÎÇؼ­ char·Î Çؼ­ ¹Þ¾Æ¼­ 64bit ¾²¼¼¿ä.. [ CnUnix ] in KIDS ±Û ¾´ ÀÌ(By): unixboy (¼¼Å¹¼ÒÁÖÀÎ) ³¯ Â¥ (Date): 2002³â 3¿ù 15ÀÏ ±Ý¿äÀÏ ¿ÀÈÄ 05½Ã 49ºÐ 01ÃÊ Á¦ ¸ñ(Title): Re: [Q] sizeof ¹®Á¦... Solaris compile ½Ã¿¡ word-align ¿É¼ÇÀÌ µÇ¾î ÀÖ´Â °ÍÀº ¾Æ´Ñ°¡¿ä? 64bit Ultra °è¿­ CPU°¡ ¹ÚÈù W/S ¿¡¼­¿ä... ¾Æ´Ï¸é...¸ð... Àúµµ ¸ð¸£ÁÒ.. ¸ð.. ÇìÇì. ±Û ¾´ ÀÌ(By): swhan (kkRunner) ³¯ Â¥ (Date): 2002³â 3¿ù 15ÀÏ ±Ý¿äÀÏ ¿ÀÈÄ 06½Ã 49ºÐ 24ÃÊ Á¦ ¸ñ(Title): Re: [Q] sizeof ¹®Á¦... uint64_tÀÇ data¸¦ ¹ÞÀ»¶§(!) seg fault°¡ ³­´Ù¸é ¾Æ¸¶ ¹öÆÛ °ü¸®ÀÇ À߸øÀÏ °ÍÀÔ´Ï´Ù. 64bit Á¤¼öÇü µ¥ÀÌÅ͸¦ ³×Æ®¿÷À¸·Î º¸³»´Â °ÍÀº ±×¸® ÈçÇÑ ÀÏÀÌ ¾Æ´Õ´Ï´Ù. Á¤¼ö´ø ½Ç¼ö´ø Å« ¼ö¸¦ º¸³»´Â °¡Àå È®½ÇÇÑ °ÍÀº stringÀ¸·Î(sprintfµîÀ¸·Î Âï¾î¼­)º¸³»´Â °ÍÀÌ°í, ÀÌ°ÍÀÌ ºñÈ¿À²ÀûÀ̶ó¸é network byte order·Î º¯È¯ÇØÁÖ´Â ¸ÅÅ©·Î³ª ÇÔ¼ö¸¦ Á÷Á¢ ÀÛ¼ºÇؼ­ ½á¾ß ÇÒ°Ì´Ï´Ù. Àü htonlÀ» ÀÌ¿ëÇؼ­ º¯È¯ÇØÁÖ´Â ¸ÞÅ©·Î¸¦ ¸¸µé¾î ½è¾ú´Âµ¥ ±×³É ÇÔ¼ö·Î ¸¸µå´Â°Ô ³´Áö.. ½Í±âµµ ÇÕ´Ï´Ù. ¸î¸î ´Ù¸¥ ÀÎÄÚµù ¹æ¹ýÀÌ ÀÖ±ä Çѵ¥ ¹èº¸´Ù ¹è²ÅÀÌ ´õ Å« °æ¿ì°¡ »ý±â¹Ç·Î ¾²Áö ¾Ê´Â°Ô ³´°Ú±¸¿ä. ¹¹ ´Ù¸¥ ÁÁÀº ¹æ¹ýÀÌ ÀÖÀ»±î¿ä? [ CnUnix ] in KIDS ±Û ¾´ ÀÌ(By): terzeron (microkid) ³¯ Â¥ (Date): 2002³â 3¿ù 16ÀÏ Åä¿äÀÏ ¿ÀÀü 01½Ã 17ºÐ 56ÃÊ Á¦ ¸ñ(Title): Re: [Q] sizeof ¹®Á¦... 1. ¹¹, ¾ïÁö·Î ÇÑ´Ù¸é¾ß ´ÙÀ½ÀÇ ¿¹Á¦¸¦ È°¿ëÇϽøé ÁÁÀ» °Í °°±º¿ä. ¼Ö¶ó¸®½º, FreeBSD(i386)¿¡¼­ ¸ðµÎ ÀÛµ¿ÇÕ´Ï´Ù. ¹°·Ð FB´Â ¸®´ª½ºÃ³·³ little endianÀÔ´Ï´Ù. struct¿¡ __attribute__((packed))¸¦ Áشٰųª ÄÄÆÄÀÏ ¿É¼Ç¿¡ -fpack-struct¸¦ Áְųª #pragma pack(n)À» ÀÌ¿ëÇÏ¸é ±¸Á¶Ã¼¸¦ packÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·¯¸é ±¸Á¶Ã¼ÀÇ Å©±â ¹®Á¦´Â ÇØ°áÀÌ µË´Ï´Ù. (¹°·Ð byteorder ¹®Á¦ ¿©ÀüÈ÷ ³²¾Æ ÀÖ½À´Ï´Ù.) #include #include int main() { struct __attribute__((packed)) ll { uint32_t b; uint64_t a; } lll; printf("uint64_t=%d\n", sizeof (uint64_t)); printf("uint32_t=%d\n", sizeof (uint32_t)); printf("lll=%d\n", sizeof (lll)); return 0; } 2. ±×¸®°í htonlÀÌ ¾î¼Àºí¸®¾î·Î ÀÛ¼ºµÇ¾î ÀÖÀ¸´Ï 64 bit¿ë htonllÀ» ¸¸µç´Ù Ä¡¸é 32 bit µÎ °³·Î ÂÉ°³°í ±×°É htonlÇÑ ÈÄ¿¡ µÎ °³ integerÀÇ ¼ø¼­¸¦ ¹Ù²ã¼­ ºÙÀÌ¸é µÇ°Ú½À´Ï´Ù. long long htonll(long long source) { long pass; long nl; long long target; memcpy(&pass, ((long *) &source) + 1, sizeof (long)); nl = htonl(pass); memcpy(&target, &nl, sizeof (long)); memcpy(&pass, &source, sizeof (long)); nl = htonl(pass); memcpy(((long *) &target) + 1, &nl, sizeof (long)); return target; } ¼º´É º¸Àå ¸ø ÇÕ´Ï´Ù. ´ë·«ÀÇ ¾ÆÀ̵ð¾î¸¦ ±¸ÇöÇÑ Á¤µµÀ̴ϱî¿ä. ^^ ±×¸®°í swhan´Ô ¸»¾¸´ë·Î struct¾È¿¡ ÀÖ´Â long longÀ» ³×Æ®¿÷À¸·Î º¸³½´Ù´Â °Í ÀÚü°¡ ¾Æ¹«·¡µµ ÀÌ»óÇÕ´Ï´Ù. byteorder ¹®Á¦°¡ ÂòÂòÇϰŵç¿ä. Àü¿¡µµ ÀÌ·± À̾߱Ⱑ ³ª¿Ô¾úÁö¸¸ ½ÓºýÇÑ ÇØ°áÃ¥µµ º°·Î ¾ø´Â °Í °°±¸¿ä. [ CnUnix ] in KIDS ±Û ¾´ ÀÌ(By): Tony (°ü°´2) ³¯ Â¥ (Date): 2002³â 3¿ù 16ÀÏ Åä¿äÀÏ ¿ÀÀü 10½Ã 42ºÐ 04ÃÊ Á¦ ¸ñ(Title): Re: [Q] sizeof ¹®Á¦... ±×³É Àâ´ãÀÔ´Ï´Ù~~~~ #define ___swab64(x) \ ({ \ __u64 __x = (x); \ ((__u64)( \ ((__u64)(((__u64)(__x) & (__u64)0x00000000000000ffULL) << 56) | \ ((__u64)(((__u64)(__x) & (__u64)0x000000000000ff00ULL) << 40) | \ ((__u64)(((__u64)(__x) & (__u64)0x0000000000ff0000ULL) << 24) | \ ((__u64)(((__u64)(__x) & (__u64)0x00000000ff000000ULL) << 8) | \ (__u64)(((__u64)(__x) & (__u64)0x000000ff00000000ULL) >> 8) | \ __u64)(((__u64)(__x) & (__u64)0x0000ff0000000000ULL) >> 24) | \ __u64)(((__u64)(__x) & (__u64)0x00ff000000000000ULL) >> 40) | \ __u64)(((__u64)(__x) & (__u64)0xff00000000000000ULL) >> 56) )); \ }) ¿ä°Ô ¸®´ª½º¿¡ µé¾îÀÖ´Â 64bit ¹ÙÀÌÆ® ¿À´õ ¹Ù²Ù´Â°Å±¸¿ä... __u64´Â long longÀÌ°ÚÁÒ? ½¬ÇÁÆ®¿Í ºñÆ® ¿ÀÆÛ·¹À̼ÇÀ¸·Î µ¹¸®¸é ¾Æ¸¶ ¼º´ÉÀº °¡Àå ÁÁÀ»µí ½Í³×¿ä... Structure¸¦ ¿©·¯ Ç÷¿Æû¿¡¼­ ȣȯ¼ºÀ» °¡Áöµµ·Ï Àü´ÞÇÏ´Â ¹æ¹ýÀº RPC¸¦ ÀÌ¿ëÇÏ´Â ¹æ¹ý¹Û¿¡ ¾øÀ»²¨±¸¿ä...(¾Õ¿¡¼­ Àá½Ã ¾ð±ÞµÆÁÒ? XDR À̶ó´Â Ưº°ÇÑ ¿£ÄÚµù ¹æ¹ýÀ» »ç¿ëÇÕ´Ï´Ù. ´À¸®ÁÒ.... È®½ÇÈ÷ ´À¸®ÁÒ... ´ë½Å ȣȯ¼º!) ¼º´É°ú Ç÷¿ÆûÀÌ Á¤ÇØÁ®ÀÖ´Ù¸é ±×³É µû·Î ÇÁ·ÎÅäÄÝ Á¤ÀÇÇÏ½Ã°í ¼ø¼­´ë·Î º¸³»½Ã°í ¼ø¼­´ë·Î ¹ÞÀ¸¼¼¿ä. ½ºÆ®·°ÃÄ ¸¸µé¾î º¸³»Áö ¸¶½Ã±¸¿ä... byteorder¸¸ Á¶±Ý ½Å°æ¾²½Ã°í.. == ¿©±â±îÁö°¡ Àâ´ãÀÔ´Ï´Ù == 64bit typeÀ» ³×ÅÎÀ¸·Î º¸³»°í ¹ÞÀ¸¸é ¿¡·¯³­´Ù°í Çϼ̴µ¥¿ä. ¿¡·¯¸Þ½ÃÁö¸¦ º¸¿©Áֽøé ÁÁ°Ú³×¿ä. RISCŸÀÔÀÇ CPUµéÀÇ °æ¿ì Unaligned AccessÀ̵ý½ÄÀÇ ¿¡·¯ ÀÚÁÖ Á¢Çϴµ¥¿ä. »ó´çÈ÷ °ñÄ¡¾ÆÇÁÁÒ?(ƯÈ÷ ¾ÏÀûÀÎ ¸®½ºÅ©¶ó ºÒ¸®´Â ARM) ¹Þ´Â µ¥ÀÌŸ°¡ ¸» ±×´ë·Î AlignµÇ¾îÀÖÁö ¾Ê¾Æ¼­ »ý±â´Â ¹®Á¦±¸¿ä.. [ 1 | 2 | 3 | 4 ] 32bit±â°è¿¡¼­ ÀÌ·±½ÄÀ¸·Î µÇ¾îÀÖ¾î¾ß ÇÒ µ¥ÀÌŸ°¡ [ ~~~~~~~~~ | 1 ] [ 2 | 3 | 4 | ~~] ÀÌ·±½ÄÀ¸·Î µÇ¾îÀÖÀ¸¸é(Æ÷ÀÎÅÍ Âï¾îº¸¸é 32bit ¸Ó½ÅÀ̶ó¸é 4ÀÇ ¹è¼öÀÇ ÁÖ¼Ò·Î ³ª¿Í¾ß°ÚÁÒ?) Memory Bus°¡ 32bit´ÜÀ§·Î AccessÇϱ⶧¹®¿¡ »ý±â´Â ¹®Á¦ÀÔ´Ï´Ù. CISCµéÀº Memory¸¦ µÎ¹ø AccessÇؼ­ Àоî¿Í¼­ ´À¸®Áö¸¸ 󸮴 °¡´ÉÇϵµ·Ï Çϴµ¥ RISCµéÀº ±¸Çö»óÀÇ ¿À¹öÇìµå¶§¹®ÀÎÁö CPU¿¡¼­ Exception Æ¢¾î³ª¿Àµµ·Ï µÇ¾îÀÖ½À´Ï´Ù. ÀÌ°É·Î ¹ö±×°¡ »ý±â¸é ARM¿¡¼± Bus ErrorÀΰ¡ Çϴ°͹ۿ¡ ¾ÈÆ¢¾î³ª¿À±â ¶§¹®¿¡ °í»ýÇÏ´ø ±â¾ïÀÌ ³ª´Â±º¿ä. [ CnUnix ] in KIDS ±Û ¾´ ÀÌ(By): ahsarang (.¾Æ.»ç.¶û.) ³¯ Â¥ (Date): 2002³â 3¿ù 16ÀÏ Åä¿äÀÏ ¿ÀÈÄ 01½Ã 53ºÐ 38ÃÊ Á¦ ¸ñ(Title): Re: [Q] sizeof ¹®Á¦... º¸Åë °Á struct·Î Á¤ÀÇÇؼ­ ÁÖ°í ¹ÞÀ¸·Á°íµé Çϴµ¥ Àü stringÀ¸·Î º¯È¯Çؼ­ Á¤ÀÇÇÕ´Ï´Ù. ÀÌÄÉ Çظé ÁÁÀºÁ¡ÀÌ telnetÀ¸·Î °£´ÜÈ÷ test°¡ °¡´ÉÇÏ´Ù´Â °ÅÁö¿ä. ÀÌÄÉÇϸé ÀßÁÖ³× Àß¹Þ³× ÀÌ·± ½Î¿ò(-.-) ÇÊ¿ä ¾ø½À´Ï´Ù. ƯÈ÷ OS°¡ ´Ù¸£°í ¾ð¾î°¡ ´Ù¸¥ °æ¿ì ´õ´õ¿í~~~ ¿äÁò XML»ç¿ëÇÏÀÚ´Â ºÐÀ§±â´øµ¥ °Ç ÆíÀÇ¿¡ ºñÇØ over-head°¡ Å«°Å°°±¸¿ä. [ CnUnix ] in KIDS ±Û ¾´ ÀÌ(By): swhan (kkRunner) ³¯ Â¥ (Date): 2002³â 3¿ù 16ÀÏ Åä¿äÀÏ ¿ÀÈÄ 03½Ã 13ºÐ 34ÃÊ Á¦ ¸ñ(Title): Re: [Q] sizeof ¹®Á¦... ¼º´ÉÀÌ Å©¸®Æ¼ÄÃÇÏÁö¸¸ ¾ÊÀ¸¸é ¼ø¼öÇÏ°Ô ½ºÆ®¸µÀ¸·Î º¸³»´Â°Ô ±ò²ûÇØÁú ¼ö ÀÖ°Ú³×¿ä ´Ü.. ¾µ¸¸ÇÑ Æļ­¸¦ Çϳª ¸¸µé¾îµÎ°í ½á¾ß Çϰڳ׿ä. ¸Þ¼¼Áö Çü½Ä Á¶±Ý ¹Ù²ï´Ù°í ´Ù ¶â¾î°íÄ¡Áö ¾ÈÇϵµ µÇ´Â Æ÷ÅͺíÇÑ ³ÑÀ¸·Î¿ä. ¸Þ¼¼Áö Æ÷¸ä½ºÆ®¸µ ³Ö¾îÁÖ¸é ÀÚµ¿À¸·Î 󸮸¦ ÇØÁÖ´Â ³ÑÀÌ¸é ´õ ÁÁ°Ú±¸¿ä. ±×·¸°Ô µÇ¸é scanf¶û ºñ½ÁÇØÁö·Á³ª? o.O ÀÌ·± ¿ëµµ·Î ¾µ¸¸ÇÑ ¶óÀ̺귯¸®°¡ °ø°³µÈ°Ô ¹º°¡ ÀÕÀ» °Í °°Àºµ¥.. ¾Æ½Ã´ÂºÐ? (Áß°£ÀÌ Ä³¸¯ÅÍ ½ºÆ®¸µÀÌµç ¹¹µç ¸»ÀÔ´Ï´Ù.) [ CnUnix ] in KIDS ±Û ¾´ ÀÌ(By): dalgong (´Þ°ø¾ÆÀú¾¾) ³¯ Â¥ (Date): 2002³â 3¿ù 18ÀÏ ¿ù¿äÀÏ ¿ÀÀü 11½Ã 02ºÐ 35ÃÊ Á¦ ¸ñ(Title): Re: [Q] sizeof ¹®Á¦... align¹®Á¦¿¡¼­ ±× structure°¡ array¿¡ µé¾î°¥¶§¸¦ °í·ÁÇØ ³¡¿¡ paddingÀÌ »ý±â´Â °æ¿ì°¡ À־ Á¶½ÉÇØ¾ß ÇÕ´Ï´Ù. ±×¸®°í, endian¹®Á¦³ª align¹®Á¦´Â osÀÇ ¹®Á¦°¡ ¾Æ´Ï¶ó cpu architectureÀÇ ¹®Á«´Ï´Ù. glib°°Àºµ¥ º¸½Ã¸é 64 bit swapÇϴ°ŠÁ¤ÀǵǾî ÀÖ½À´Ï´Ù. ¾Õ¿¡ ¾î¶² ºÐÀÌ ¼³¸íÇϽŠ°Íó·³ bitwise &, |, >>, << Àß Á¶ÇÕÇؼ­ ¸¸µé¾ú³×¿ä. headerÀÇ macroºÎºÐ °¡Á®´Ù°¡ ¾²½Ã¸é µÇ°Ú³×¿ä. ±Ùµ¥ x86¿¡¼­´Â endianÀ» ¹Ù²Ù´Â assembly instructionÀÌ ÀÖ´Ù°í ÇÏ´õ±º¿ä. C¸¦ ¾²´Ùº¸´Ï Àß ¾²Áö ¾Ê°Ô µÇ¾ú´Ù´Â... xdrÀ̳ª asn.1 °°Àº°Å ¾²½Ã¸é º° ¹«¸®°¡ ¾øÁö ¾ÊÀ»±î¿ä? [ CnUnix ] in KIDS ±Û ¾´ ÀÌ(By): swhan (kkRunner) ³¯ Â¥ (Date): 2002³â 3¿ù 18ÀÏ ¿ù¿äÀÏ ¿ÀÀü 11½Ã 33ºÐ 34ÃÊ Á¦ ¸ñ(Title): Re: [Q] sizeof ¹®Á¦... pc¿¡ ±ò¸° linuxÀÇ htonlÀ̶û htonsµîÀ» ºÃ¾ú´Âµ¥ ¾î¼Àºí¸®ÄÚµå 1~3ÁÙÀÌ´õ±º¿ä À̰Ŷû Á¶ÇÕÇؼ­ ¸¸µé¾îº» 64bit endianº¯È¯ ¸ÅÅ©·Î´Â ÇÑ ¾î¼Àºí¸®ÄÚµå 50ÁÙÁ¤µµ (callÆ÷ÇÔ, callÀÌÇÏ´Ü Á¦¿Ü) ¼ø¼ö ¸ÅÅ©·Î·Î ¸¸µç °ÍÀº ÇÑ 150Á¤µµ.. x86¿¡¼­ ¾ê±âÀÔ´Ï´Ù. ASN.1Àº ¿À¹öÇìµå°¡ Á» Å©Áö ¾Ê³ª¿ä? ¹ü¿ëÀ¸·Î ¾²±â¿£ »ç¿ëÇÏ´Â°Ô ÆíÇѰŵµ ¾Æ´Ï°í... xdrÀº.. À½.. Á» ½¬¿î°¡?