memory-alignment

    7熱度

    3回答

    根據維基百科頁面Segmentation fault,總線錯誤可能由未對齊的內存訪問引起。本文舉例說明如何觸發總線錯誤。在這個例子中,我們必須啓用對齊檢查來查看總線錯誤。如果我們禁用這種對齊檢查會怎樣? 該程序似乎正常工作。我有一個程序頻繁地訪問未對齊的內存,並且它被很多人使用,但沒有人向我報告總線錯誤或其他奇怪的結果。如果我們禁用對齊檢查,未對齊內存的副作用是什麼? 平臺:我在x86/x86-6

    4熱度

    2回答

    背景: 我有一個優化的Delphi/BASM例程單位,主要是用於大量計算。其中一些例程包含內部循環,如果循環開始與DQWORD(16字節)邊界對齊,我可以實現顯着的加速。我可以確保所討論的循環按照需要進行對齊,如果我知道常規入口點處的對齊方式。據我所見,Delphi編譯器將過程/函數與DWORD邊界對齊,例如,給設備添加功能可能會改變後續設備的對齊。但是,只要我將例程的結尾填充爲16的倍數,我可以

    0熱度

    2回答

    我有一個32位的.NET程序集,其中PInvokes到C層。我想將此程序集移植到64位。我已經閱讀了許多與移植到64位有關的文檔,所有這些似乎都表明,如果我們要使用結構,我們需要關注對齊。 我有一個關於結構對齊的普遍問題,並且想先澄清一下,這樣我就不會錯過任何東西。 假設我有一個C入口點,它接受一個結構指針並基本填充裏面的值。這個C代碼沒有任何裝箱指令,我把所有的.NET結構都對齊到pack =

    4熱度

    3回答

    我有一個C函數,其中包含將實現字節碼解釋器的字節碼的所有代碼。 我想知道是否有一種方法可以在固定大小的邊界上對齊內存中的編譯代碼段,以便我可以直接計算從字節碼的值跳轉到的地址?排序方式與數組的工作方式相同,但不是從計算的地址中讀取,而是跳到它。 我知道,我將不得不把代碼放在每個「字節碼代碼」段的末尾執行下一個跳轉,並且我將不得不使邊界尺寸至少與最大尺寸分割。 如果這甚至是可能的,我將如何告訴編譯器