1ÀåÀÇ ³»¿ëÀº ÄÄÇ»Å͸¦ Àü°øÇÑ »ç¶÷À̶ó¸é ´©±¸³ª ´Ù ¾Æ´Â ³»¿ëÀÌÁö¸¸
¾î¼Àºí¸®¾î ½Ç½ÀÀ» ÇϱâÀ§Çؼ´Â ¹Ýµå½Ã ¾Ë¾Æ¾ß ÇÏ´Â ³»¿ëÀÔ´Ï´Ù.
´Ù ¾Æ´Â ³»¿ëÀÌ°ÚÁö¸¸ ±â¾ïÀ» µÇ»ì¸®´Â Â÷¿ø¿¡¼ °£´ÜÇÏ°Ô¸¸ ¼³¸í Çϵµ·Ï ÇÏ°Ú½À´Ï´Ù.
1. Base of Software Engineering
1.1 Memory Endian Formats
¿öµå µ¥ÀÌÅÍ ¾È¿¡¼ÀÇ ¹ÙÀÌÆ® ¼ø¼·Î Å©°Ô ºò ¿£µð¾ð°ú ¸®Æ² ¿£µð¾ðÀ¸·Î ³ª´ ¼ö ÀÖ½À´Ï´Ù. ºò ¿£µð¾ðÀº »ç¶÷ÀÌ ¼ýÀÚ¸¦ ¾²´Â ¹æ¹ý°ú °°ÀÌ Å« ´ÜÀ§ÀÇ ¹ÙÀÌÆ®°¡ ¾Õ¿¡ ¿À´Â ¹æ¹ýÀÌ°í, ¸®Æ² ¿£µð¾ðÀº ¹Ý´ë·Î ÀÛÀº ´ÜÀ§ÀÇ ¹ÙÀÌÆ®°¡ ¾Õ¿¡ ¿À´Â ¹æ¹ýÀÔ´Ï´Ù. ´Ù½ÃÇѹø °Á¶ ÇÏÁö¸¸ ÀÌ°ÍÀº ¿öµå ¹üÀ§ ³»¿¡¼ÀÇ ¹ÙÀÌÆ® ´ÜÀ§ÀÇ ¼ø¼ ÀÔ´Ï´Ù.
¶ÇÇÑ ARM ·¹Áö½ºÅÍ¿¡ ÀúÀåÀÌ µÉ °æ¿ì¿¡´Â ¿£µð¾ÈÀÇ ±¸ºÐÀÌ ¾ø°í ¸Þ¸ð¸® Á¢±Ù Ãø¸é¿¡¼¸¸ ±¸ºÐÀÌ ÇÊ¿ä ÇÕ´Ï´Ù.
¿£µð¾È Á¾·ù |
0x1234 |
0x12345678 |
¾ÆÅ°ÅØÃÄ |
Big-endian |
12 34 |
12 34 56 78 |
¸ðÅä·Î¶ó µî |
Little-endian |
34 12 |
78 56 34 12 |
x86 |
* ¸î¸î ¾ÆÅ°ÅØó´Â ºò ¿£µð¾ð°ú ¸®Æ² ¿£µð¾ð Áß Çϳª¸¦ ¼±ÅÃÇÒ ¼ö ÀÖµµ·Ï ¼³°èµÇ¾î ÀÖ°í, À̸¦ ¹ÙÀÌ ¿£µð¾ð(Bi-endian)À̶ó ºÎ¸¨´Ï´Ù. PowerPC, DEC ¾ËÆÄ, MIPS, PA-RISC, IA-64 µîÀº ¹ÙÀÌ ¿£µð¾ðÀ» »ç¿ëÇÏ´Â ´ëÇ¥ÀûÀÎ ¾ÆÅ°ÅØó ÀÔÀÌ´Ù. ¿ì¸®°¡ °øºÎÇÏ°í ÀÖ´Â ARMµµ ¿£µð¾ðÀ» ¼±ÅÃÇؼ »ç¿ëÇÒ ¼ö ÀÖµµ·Ï ¼³°èµÇ¾î ÀÖ½À´Ï´Ù.
x86 ¾ÆÅ°ÅØó°¡ ¸®Æ² ¿£µð¾ðÀ» ¾²±â ¶§¹®¿¡, ¿À´Ã³¯ x86 ¾ÆÅ°ÅØó¸¦ »ç¿ëÇÏ´Â ´ëºÎºÐÀÇ µ¥½ºÅ©Åé ÄÄÇ»ÅÍ´Â ¸®Æ² ¿£µð¾ðÀ» ¾²¸ç À̸¦ "ÀÎÅÚ Æ÷¸Ë" À̶ó°í ÇÕ´Ï´Ù
Example)
32ºñÆ® ¼ýÀÚÀÎ 0x2A¸¦ Little-endianÀ¸·Î Ç¥½Ã Çϸé ?
0x00 00 00 2A = 2A 00 00 00
1.2 º¸¼ö Ç¥Çö
ÄÄÇ»ÅÍ¿¡¼ º¸¼ö¸¦ »ç¿ëÇÏ´Â ÀÌÀ¯´Â ¹«¾úÀ»±î¿ä ? ¸ðµç °ÍÀÌ 0°ú 1·Î Ç¥ÇöµÇ´Â ÄÄÇ»ÅÍ¿¡¼ À½¼ö¸¦ Ç¥ÇöÇϴµ¥ Æí¸® Çϱ⠶§¹®¿¡ »ç¿ëÇÕ´Ï´Ù. ¹°·Ð À̸¦ ÀÌ¿ëÇؼ »¬¼Àµµ ÇÕ´Ï´Ù. ¿¹¸¦ µé¸é 12-3 ÀÇ ¼ö½ÄÀ» ÄÄÇ»ÅÍ(ALU)¿¡¼ °è»êÀ» ÇÏ¸é ½ÇÁ¦·Î´Â 12¿¡¼ 3À» »©´Â °ÍÀÌ ¾Æ´Ï¶ó 12 ¿Í 3ÀÇ 2ÀÇ º¸¼ö(3ÀÇ À½¼öÇ¥Çö)¸¦ ´õÇؼ °è»êÀ» ÇÏ°Ô µË´Ï´Ù.
1.2.1 "1" ÀÇ º¸¼ö
ÁÖ¾îÁø ÀÌÁø¼öÀÇ ¸ðµç ÀÚ¸®ÀÇ ¼ýÀÚ¸¦ ¹ÝÀü(0À» 1·Î, 1À» 0À¸·Î)½ÃÅ°¸é 1ÀÇ º¸¼ö¸¦ ¾òÀ» ¼ö ÀÖ½À´Ï´Ù.
8ÀÚ¸®ÀÇ ÀÌÁø¼ö 01001011(½ÊÁø¼ö·Î 75)ÀÇ 1ÀÇ º¸¼ö¸¦ ±¸ÇÏ¸é ¾Æ·¡¿Í °°½À´Ï´Ù.
01001011 ÀÇ ¸ðµç ÀÚ¸®ÀÇ ¼ö¸¦ ¹ÝÀü½ÃŲ´Ù.
10110100 --> 1ÀÇ º¸¼ö
1.2.2 "2" ÀÇ º¸¼ö
1ÀÇ º¸¼ö¸¦ ±¸ÇÑ´ÙÀ½ 2Áø¼ö "1" À» ´õÇÏ¸é µË´Ï´Ù.
8ÀÚ¸®ÀÇ ÀÌÁø¼ö 01001011(½ÊÁø¼ö·Î 75)ÀÇ 2ÀÇ º¸¼ö¸¦ ±¸ÇÏ¸é ¾Æ·¡¿Í °°½À´Ï´Ù.
01001011 ÀÇ ¸ðµç ÀÚ¸®ÀÇ ¼ö¸¦ ¹ÝÀü½ÃŲ´Ù.
10110100 --> 1ÀÇ º¸¼ö
10110100
+) 00000001 --> 1ÀÇ º¸¼ö¿¡¼ 1À» ´õÇÕ´Ï´Ù.
---------------
10110101 --> 2ÀÇ º¸¼ö
º¸¼ö¸¦ ±¸ÇÏÇÒ´ë ÇÑ ÀÚ¸®°¡ ´õ ±æ¾îÁú °æ¿ì¿¡´Â °¡Àå ³ôÀº ÀÚ¸®ÀÇ ¼ýÀÚ´Â ¹ö¸³´Ï´Ù.
1.2.3 "2" ÀÇ º¸¼ö¸¦ ÀÌ¿ëÇÑ »¬¼À
¿¹Á¦) 100-75¸¦ 2ÀÇ º¸¼ö¸¦ ÀÌ¿ëÇؼ ¿¬»êÇϽÿä.
100-75´Â 100+(-75)¿Í °°À¸¹Ç·Î
01100100 ( 10Áø¼ö 100 )
+) 10110101 ( 10Áø¼ö 75ÀÇ 2ÀÇ º¸¼ö )
---------------
100011001
»õ·Î »ý±ä °¡Àå ³ôÀº ÀÚ¸®ÀÇ ¼ýÀÚ¸¦ »©°í ³²Àº 00011001Àº ½ÊÁø¼ö·Î 25¿Í °°À¸¸ç ÀÌ´Â °è»êÇÏ·Á´ø ½ÄÀÇ °á°úÀÔ´Ï´Ù.
¿¹Á¦) 10-75¸¦ 2ÀÇ º¸¼ö¸¦ ÀÌ¿ëÇؼ ¿¬»êÇϽÿä.
10-75´Â 10+(-75)¿Í °°À¸¹Ç·Î
00001010 ( 10Áø¼ö 10 )
+) 10110101 ( 10Áø¼ö 75ÀÇ 2ÀÇ º¸¼ö )
---------------
10111111 ( ÀÌ °á°ú´Â À½¼ö : MSB°¡ 1 À̹ǷΠ´Ù½Ã 2ÀÇ º¸¼ö¸¦ ÃëÇϸé 65 Áï -65 )
10111111 °á°ú´Â MSB°¡ 1(À½¼ö) À̹ǷΠ´Ù½Ã 2ÀÇ º¸¼ö¸¦ ÃëÇغ¸¸é 01000001Àº ½ÊÁø¼ö·Î 65¿Í °°À¸¸ç ÀÌ´Â °è»êÇÏ·Á´ø ½ÄÀÇ °á°ú -65°¡ µË´Ï´Ù.
1.3 ³í¸® ¿¬»ê
1.3.1 NOT
2Áø¼ö °¢ ÀÚ¸®ÀÇ °ªÀ» ¹Ý´ë·Î ¹Ù²Ù´Â ¿¬»ê ÀÔ´Ï´Ù. ÀÌ ¿¬»êÀº ¾î¶² °ªÀÇ º¸¼ö¸¦ ±¸ÇÒ ¶§ È¿°úÀûÀ¸·Î »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
C³ª C++¿¡´Â "~" ¿¬»êÀ» ÅëÇØ ÀÌ °ªÀ» ±¸ÇÒ ¼ö ÀÖ½À´Ï´Ù.
1.3.2 OR
µÎ °ªÀÇ °¢ ÀÚ¸´¼ö¸¦ ºñ±³ÇØ, µÑ Áß Çϳª¶óµµ 1ÀÌ ÀÖ´Ù¸é 1À», ¾Æ´Ï¸é 0À» °è»êÇÕ´Ï´Ù.
C/C++¿¡´Â "|" ¿¬»êÀÚ°¡ ÀÌ ±â´ÉÀ» Á¦°ø ÇÕ´Ï´Ù.
1.3.3 XOR
µÎ °ªÀÇ °¢ ÀÚ¸´¼ö¸¦ ºñ±³ÇØ, °ªÀÌ °°À¸¸é 0, ´Ù¸£¸é 1À» °è»êÇÕ´Ï´Ù.
C/C++¿¡´Â "^" ¿¬»êÀÚ°¡ ÀÌ ±â´ÉÀ» Á¦°øÇÑ´Ù.
1.3.4 AND
µÎ °ªÀÇ °¢ ÀÚ¸´¼ö¸¦ ºñ±³ÇØ, µÎ °ª ¸ðµÎ¿¡ 1ÀÌ ÀÖÀ» ¶§¿¡¸¸ 1À», ³ª¸ÓÁö °æ¿ì¿¡´Â 0À» °è»ê ÇÕ´Ï´Ù.
C/C++¿¡´Â & ¿¬»êÀÚ°¡ ÀÌ ±â´ÉÀ» Á¦°øÇÑ´Ù.
1.4. Shift ¿¬»ê
1.4.1 ¿ÞÂÊÀ¸·Î ½¬ÇÁÆ®(<<)
"<<" Å°¿öµå´Â µ¥ÀÌÅ͸¦ ¿ÞÂÊÀ¸·Î ºñÆ® ¼ö¸¸Å À̵¿½ÃÅ°±â ¶§¹®¿¡ 2ÀÇ "À̵¿ÇÒ ºñÆ®¼ö" ¸¦ Á¦°öÇÑ °ª°ú
µ¥ÀÌÅÍ°¡ °öÇØÁø °ªÀÌ °á°ú °ªÀ¸·Î µµÃ⠵˴ϴÙ. 5(b00000101)¸¦ ¿ÞÂÊÀ¸·Î 3ºñÆ® À̵¿½ÃÅ°¸é 5 << 3 = 40(b00101000) Áï 5 * 8 ÇÑ °Í°ú °°Àº È¿°ú°¡ ³ªÅ¸ ³³´Ï´Ù.
°¡ÁßÄ¡ |
128 |
64 |
32 |
16 |
8 |
4 |
2 |
1 |
¿¬»êÀü |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
¿¬»êÈÄ |
0 |
0 |
1 |
0 |
1 |
0 |
0 |
0 |
1.4.2 ¿À¸¥ÂÊÀ¸·Î ½¬ÇÁÆ®(>>)
">>" Å°¿öµå´Â µ¥ÀÌÅ͸¦ ¿À¸¥ÂÊÀ¸·Î ºñÆ® ¼ö¸¸Å À̵¿½ÃÅ°±â ¶§¹®¿¡ 2ÀÇ "À̵¿ÇÑ ºñÆ®¼ö" ¸¦ Á¦°öÇÑ °ªÀ¸·Î
µ¥ÀÌÅ͸¦ ³ª´°¼À ÇÑ °ªÀÌ µµÃ⠵˴ϴÙ.
40(b00101000)¸¦ ¿À¸¥ÂÊÀ¸·Î 1ºñÆ® À̵¿½ÃÅ°¸é 40 >> 1 = 20(b00101000) Áï 40/2 ÇÑ °Í°ú °°Àº È¿°ú°¡ ÀÖ½À´Ï´Ù.
°¡ÁßÄ¡ |
128 |
64 |
32 |
16 |
8 |
4 |
2 |
1 |
¿¬»êÀü |
0 |
0 |
1 |
0 |
1 |
0 |
0 |
0 |
¿¬»êÈÄ |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
0 |
1.4.3 ºÎÈ£°¡ ÀÖ´Â ¿ÞÂÊ ½¬ÇÁÆ® ¿¬»ê(<<)
79(b01001111) << 1 = -98(b10011110)
°¡ÁßÄ¡ |
ºÎÈ£ |
64 |
32 |
16 |
8 |
4 |
2 |
1 |
¿¬»êÀü |
0 |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
¿¬»êÈÄ |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
ºÎÈ£ ºñÆ®("1")¿Í ±× ´ÙÀ½ ºñÆ®("0")°¡ ¼·Î ´Ù¸¥ °ªÀÎ °æ¿ì ºÎÈ£°¡ ¹Ù²î°í Overflow°¡ ¹ß»ýÇÏ°Ô µË´Ï´Ù. À§ÀÇ ¿¹Á¦¿¡¼´Â ¾ç¼ö¿¡¼ À½¼ö·Î ¹Ù²î¸é¼ Overflow°¡ ¹ß»ý ÇÏ¿´½À´Ï´Ù.
1.4.4 ºÎÈ£°¡ ÀÖ´Â ¿À¸¥ÂÊ ½¬ÇÁÆ® ¿¬»ê(>>)
¿©±â¼ 65ÀÇ 2ÀÇ º¸¼ö¸¦ ÀÌ¿ëÇؼ -65¸¦ Ç¥Çö Çß½À´Ï´Ù.
-65(b10111111) >> 1 = -33(b11011111)
¿¹¸¦ µé¾î À§ÀÇ ±×¸²°ú °°ÀÌ "1011 1111" °ªÀ» ¿À¸¥ÂÊÀ¸·Î Çѹø À̵¿ÇÏ¸é ¿ÞÂÊ¿¡ »ý±ä ºó °ø°£Àº ÃÖ»óÀ§ ºñÆ®ÀÎ 1 °ªÀ¸·Î ä¿öÁö´Â °ÍÀÔ´Ï´Ù. ¸¸¾à "-160 >> 4" ¸¦ ¿¬»êÇϸé -160 ÀÇ ÀÌÁø¼ö °ªÀÎ
"1010 0000" °¡ ¿À¸¥ÂÊÀ¸·Î 4ºñÆ®¸¸Å À̵¿ÇÏ°í, ¿ÞÂÊ¿¡ »ý±ä ³×°³ÀÇ ºó °ø°£Àº ÃÖ»óÀ§ ºñÆ®ÀÎ 1 ·Î ä¿öÁö¹Ç·Î ¿¬»ê °á°ú´Â "1111 1010" °¡ µË´Ï´Ù.
1.5 Rotate ¿¬»ê
µ¥ÀÌÅÍÀÇ ¸ðµç ºñÆ®µéÀ» °¢°¢ ¼·Î ÀÌ¿ôÇÑ ºñÆ®ÀÇ ÀÚ¸®·Î ¿Å±â°í ÇÑ ÂÊ ³¡¿¡¼ ¹Ð·Á ³ª°¡´Â ºñÆ®°¡ ´Ù½Ã ¹Ý´ëÆí ³¡À¸·Î µé¾î¿À°Ô µÇ´Â ¿¬»ê ÀÔ´Ï´Ù.
1.5.1 ºÎÈ£ ¾ø´Â(Rotate no carry) ¿ÞÂÊ Rotate
23(b00010111) ROL 1 = 46(b00101110)
Left circular shift or rotate
1.5.2 ºÎÈ£ ¾ø´Â(Rotate no carry) ¿À¸¥ÂÊ Rotate
23(b00010111) ROR 1 = 139(b10001011)
Right circular shift or rotate
1.5.3 ºÎÈ£ ÀÖ´Â(Rotate through carry) ¿ÞÂÊ Rotate
ROL°ú µ¿ÀÏÇÏÁö¸¸ Carry Flag°¡ ÃÖÇÏÀ§ ºñÆ®·Î À̵¿ÇÏ°í, ÃÖ»óÀÇ ºñÆ®ÀÇ °ªÀÌ Carry Flag ·Î À̵¿ µË´Ï´Ù.
23(b00010111) RCL 1 = 47(b00101111)
Left rotate through carry
1.5.4 ºÎÈ£ ÀÖ´Â(Rotate through carry) ¿À¸¥ÂÊ Rotate
23(b00010111) RCR 1 = 267(b100001011)
Right rotate through carry
¾ÆÁÖ ±âº»ÀûÀÎ ³»¿ëµé ÀÌÁö¸¸ ±âº»ÀûÀÎ°Í ºÎÅÍ Á¤È®ÇÏ°Ô ¾Ë°í ÀÖ¾î¾ß ÇÕ´Ï´Ù. ÁÖ·Î µ¥ÀÌÅÍ ¾Ïȣȳª, °í¼ÓÀÇ ±×·¡ÇÈ Ã³¸® ÀÛ¾÷ µî¿¡¼ Shift, Rotate¿¬»êÀ» ¸¹ÀÌ »ç¿ëÇÕ´Ï´Ù.
1.6 Áø¼öº¯È¯
2Áø¼ö¸¦ 16Áø¼ö·Ñ º¯È¯ ÇÒ ¶§ 4ÀÚ¸®¾¿ ²÷¾î¼ °è»êÇϸé Æí¸®ÇÕ´Ï´Ù. ÀÚÁÖ ¾²ÀÌ´Â ¼öµéÀÇ 2Áø¼ö¿Í 16Áø¼öµéÀÇ ¿¹Á¦µé ÀÔ´Ï´Ù.
2^4 = 16B = b0001 0000 = 0x10
2^5 = 32B = b0010 0000 = 0x20
2^6 = 64B = b0100 0000 = 0x40
2^7 = 128B = 0x80
2^8 = 256B = b0001 0000 0000 = 0x100
2^10 = 1KB = b0100 0000 0000 = 0x400
2^20 = 1MB = b0001 0000 0000 0000 0000 0000 = 0x100000
2^30 = 1GB = 0x40000000
2^40 = 1TB = 0X10000000000
4KB = 0x1000, 64KB = 0x10000, 1MB = 0x100000
Ex)
4GB = 4*1GB = 4 * 2^30 = 2^2 * 2^30 = 2^32 = 0x100000000
256KB = 256*1KB = 2^8 * 2^10 = 2^18 = 0x40000
96KB = 64KB + 32KB = 2^6*2^10 + 2^5*2^10 = 0x10000 + 0x3000 = 0x13000
135KB = 128KB + 4KB + 2KB + 1KB = 2^17 + 2^12 + 2^11 + 2^10 = 0x20000 + 0x1000 + 0x800 + 0x400 = 0x21c00
1.7 Data Types
Byte( 8 bits )
Halfword( 16 bits )
Word ( 32 bits )
Long Word ( 64 bits )
- Value ranges
unsigned char val;
0 <= val <= 2^8(255)
signed char val;
-128(0x80) <= val <= 127(0x7F)
int(signed 32bit integer) val;
0x8000 0000 <= val <= 7FFFF FFFF
1.8 Aligned & Un-Aligned Data Access
1.8.1 Aligned Access
(1) Halfword Data Access : µ¥ÀÌÅÍÀÇ ÁÖ¼Ò °ªÀÌ Â¦¼ö À̾î¾ß ÇÕ´Ï´Ù.
(2) Word Data Access : µ¥ÀÌÅÍÀÇ ÁÖ¼Ò °ªÀÌ 4ÀÇ ¹è¼ö À̾î¾ß ÇÕ´Ï´Ù.
Aligned Data Access |
char buf[100];
int *p;
int gVar;
p = (int *)&buf[0];
gVar = *p --> Data Abort °¡´É¼º 1
p = (int *)&buf[1];
gVar = *p --> Data Abort °¡´É¼º 2 |
- Data Abort °¡´É¼º 2 : bufÀÇ µ¥ÀÌÅÍÇüÀÌ char(8 bit) À̱⠶§¹®¿¡ 0¹ø° ÀÌÈÄ ºÎÅÍ´Â 4ÀÇ ¹è¼ö°¡ ¾Æ´Ï±â ¶§¹®¿¡ Data Abort °¡´É¼ºÀÌ ÀÖ½À´Ï´Ù.
- Data Abort °¡´É¼º 1 : 0¹ø° À妽ºÀε¥ ¾î¶»°Ô º¸¸é Data Abort °¡´É¼ºÀÌ ¾ø´Â°Í ó·³ º¸ÀÔ´Ï´Ù. º¸ÅëÀº Linker°¡ ¾Ë¾Æ¼ buf º¯¼öÀÇ ÇÒ´ç ÁÖ¼Ò¸¦ 4ÀÇ ¹è¼ö¿¡ ¸ÂÃß¾î ÁÖÁö¸¸ ±×·¸Áö ¾ÊÀ» °¡´É¼ºµµ Àֱ⠶§¹®¿¡ ¸µÄ¿¿¡ µû¶ó¼´Â Data Abort °¡´É¼ºÀÌ ÀÖ´Â °ÍÀÔ´Ï´Ù. ±×·¸´Ù¸é Data Abort°¡ ¹ß»ýÇÏÁö ¾Êµµ·Ï char ¹è¿ buf¸¦ ¼±¾ð ÇÏ·Á¸é ¾î¶»°Ô ÇØ¾ß ÇÒ±î¿ä ? ÄÄÆÄÀÏ·¯ Áö½ÃÀÚ¸¦ »ç¿ëÇؼ char ¹è¿ buf ¸¦ °Á¦·Î 4ÀÇ ¹è¼ö·Î ¸ÂÃß¾î ÁÖ´Â °ÍÀÔ´Ï´Ù.
Aligned Data Access |
#pragma data_alignment = 2 --> °Á¦·Î 4ÀÇ ¹è¼ö°¡ µÇµµ·Ï Áö½Ã
char buf[100];
int *p;
int gVar;
p = (int *)&buf[0];
gVar = *p --> Á¤»óµ¿ÀÛ
p = (int *)&buf[1];
gVar = *p --> 1¹ø° ¹è¿ ¿¡¼´Â ¿©ÀüÈ÷ Data Abort °¡´É¼º 2 |
¿©±â¼ ¶Ç ÇÑ°¡Áö ARM C¾ð¾î¿¡¼ ±¸Á¶Ã¼ ¼±¾ðÀ» ÇÒ¶§ ¾î¶»°Ô ¼±¾ðÇÏ´Â °ÍÀÌ È¿À²ÀûÀÎÁö¸¦ ¾Ë¾Æ º¾½Ã´Ù.
ºñ È¿À²ÀûÀÎ ±¸Á¶Ã¼ µ¥ÀÌÅÍ ¼±¾ð |
|
- ¸Þ¸ð¸® ¹èÄ¡
|
À§ÀÇ ±×¸²À» º¸¸é ÃÑ 5byteÀÇ ¸Þ¸ð¸® °ø°£À» ³¶ºñ ÇÏ¿´½À´Ï´Ù. ±×·¸´Ù¸é ¼±¾ð ¼ø¼¸¦ short c, int b ÀÇ ¼ø¼¸¦ ¹Ù²Ù¸é ¾î¶»°Ô µÉ±î¿ä ?
ºñ È¿À²ÀûÀÎ ±¸Á¶Ã¼ µ¥ÀÌÅÍ ¼±¾ð |
|
- ¸Þ¸ð¸® ¹èÄ¡
|
´ÜÁö ¼±¾ð ¼ø¼¸¸ ¹Ù²Ù¾îµµ ¸Þ¸ð¸® ³¶ºñ°¡ 5-bytes ¿¡¼ 1-byte·Î ÁÙ¾ú½À´Ï´Ù.
1.8.2 Un-Aligned Data Access
(1) ARM Architecture v6 ºÎÅÍ Áö¿øµÊ
(2) ARM Architecture v4T, v5T(E) µî¿¡¼ Un-aligned data¸¦ Á¢±Ù ÇÏ·Á°í Çϸé Data Abort°¡ ¹ß»ý ÇÕ´Ï´Ù.
|