• <sub id="h4knl"><ol id="h4knl"></ol></sub>
    <sup id="h4knl"></sup>
      <sub id="h4knl"></sub>

      <sub id="h4knl"><ol id="h4knl"><em id="h4knl"></em></ol></sub><s id="h4knl"></s>
      1. <strong id="h4knl"></strong>

      2. 為什么會有內(nèi)存對齊

        時間:2020-11-21 18:19:44 筆試題目 我要投稿

        為什么會有內(nèi)存對齊

          字,雙字,和四字在自然邊界上不需要在內(nèi)存中對齊。(對字,雙字,和四字來說,自然邊界分別是偶數(shù)地址,可以被4 整除的地址,和可以被8 整除的地址。)

          無論如何,為了提高程序的性能,數(shù)據(jù)結(jié)構(gòu)(尤其是棧)應(yīng)該盡可能地在自然邊界上對齊。原因在于,為了訪問未對齊的內(nèi)存,處理器需要作兩次內(nèi)存訪問;然而,對齊的內(nèi)存訪問僅需要一次訪問。

          一個字或雙字操作數(shù)跨越了4 字節(jié)邊界,或者一個四字操作數(shù)跨越了8 字節(jié)邊界,被認為是未對齊的,從而需要兩次總線周期來訪問內(nèi)存。

          一個字起始地址是奇數(shù)但卻沒有跨越字邊界被認為是對齊的,能夠在一個總線周期中被訪問。某些操作雙四字的指令需要內(nèi)存操作數(shù)在自然邊界上對齊。如果操作數(shù)沒有對齊,這些指令將會產(chǎn)生一個通用保護異常。

          雙四字的自然邊界是能夠被16 整除的地址。其他的操作雙四字的指令允許未對齊的訪問(不會產(chǎn)生通用保護異常),然而,需要額外的內(nèi)存總線周期來訪問內(nèi)存中未對齊的`數(shù)據(jù)。

          缺省情況下,編譯器默認將結(jié)構(gòu)、棧中的成員數(shù)據(jù)進行內(nèi)存對齊。因此,上面的程序輸出就變成了:c1 00000000, s 00000002, c2 00000004, i 00000008。

          編譯器將未對齊的成員向后移,將每一個都成員對齊到自然邊界上,從而也導(dǎo)致了整個結(jié)構(gòu)的尺寸變大。盡管會犧牲一點空間(成員之間有部分內(nèi)存空閑),但提高了性能。

          也正是這個原因,我們不可以斷言sizeof(TestStruct1)的結(jié)果為8。在這個例子中,sizeof(TestStruct1)的結(jié)果為12。

        《&.doc》
        将本文的Word文档下载到电脑,方便收藏和打印
        推荐度:
        点击下载文档

        【為什么會有內(nèi)存對齊】相關(guān)文章:

        為什么會有閏月07-24

        為什么嬰兒會有黃疸10-25

        為什么會有精神分裂癥08-28

        街舞鬼步舞為什么會有力量感10-01

        word怎樣快速制作虛線對齊11-11

        CAD標注對齊尺寸的方法08-10

        詳細解釋紅茶為什么會有這么多人喜歡飲用09-17

        CSS入門知識-圖片水平對齊技巧10-15

        CAD多行文字怎么豎著對齊09-12

        在线咨询
        国产高潮无套免费视频_久久九九兔免费精品6_99精品热6080YY久久_国产91久久久久久无码
      3. <sub id="h4knl"><ol id="h4knl"></ol></sub>
        <sup id="h4knl"></sup>
          <sub id="h4knl"></sub>

          <sub id="h4knl"><ol id="h4knl"><em id="h4knl"></em></ol></sub><s id="h4knl"></s>
          1. <strong id="h4knl"></strong>

          2. 亚州高清在线A∨ | 日本亚洲欧美高清专区vr专区 | 亚洲VA久久久噜噜噜久久 | 久久久亚洲综合久久久久87 | 亚洲就去吻婷婷永久网 | 日韩国产亚洲欧美在线 |

            為什么會有內(nèi)存對齊

              字,雙字,和四字在自然邊界上不需要在內(nèi)存中對齊。(對字,雙字,和四字來說,自然邊界分別是偶數(shù)地址,可以被4 整除的地址,和可以被8 整除的地址。)

              無論如何,為了提高程序的性能,數(shù)據(jù)結(jié)構(gòu)(尤其是棧)應(yīng)該盡可能地在自然邊界上對齊。原因在于,為了訪問未對齊的內(nèi)存,處理器需要作兩次內(nèi)存訪問;然而,對齊的內(nèi)存訪問僅需要一次訪問。

              一個字或雙字操作數(shù)跨越了4 字節(jié)邊界,或者一個四字操作數(shù)跨越了8 字節(jié)邊界,被認為是未對齊的,從而需要兩次總線周期來訪問內(nèi)存。

              一個字起始地址是奇數(shù)但卻沒有跨越字邊界被認為是對齊的,能夠在一個總線周期中被訪問。某些操作雙四字的指令需要內(nèi)存操作數(shù)在自然邊界上對齊。如果操作數(shù)沒有對齊,這些指令將會產(chǎn)生一個通用保護異常。

              雙四字的自然邊界是能夠被16 整除的地址。其他的操作雙四字的指令允許未對齊的訪問(不會產(chǎn)生通用保護異常),然而,需要額外的內(nèi)存總線周期來訪問內(nèi)存中未對齊的`數(shù)據(jù)。

              缺省情況下,編譯器默認將結(jié)構(gòu)、棧中的成員數(shù)據(jù)進行內(nèi)存對齊。因此,上面的程序輸出就變成了:c1 00000000, s 00000002, c2 00000004, i 00000008。

              編譯器將未對齊的成員向后移,將每一個都成員對齊到自然邊界上,從而也導(dǎo)致了整個結(jié)構(gòu)的尺寸變大。盡管會犧牲一點空間(成員之間有部分內(nèi)存空閑),但提高了性能。

              也正是這個原因,我們不可以斷言sizeof(TestStruct1)的結(jié)果為8。在這個例子中,sizeof(TestStruct1)的結(jié)果為12。