memory-segmentation

    -2熱度

    1回答

    我正在嘗試使用標記編寫C的垃圾回收器&掃描策略,但我不知道如何遍歷bss段,數據段。我如何獲得這些段的開始地址和結束地址,以及如何找到堆棧的底部?

    2熱度

    1回答

    我在想如何編程我的目標板時,PROGRAMMER根據生成的可執行文件中的信息對目標板進行編程,我覺得這是由鏈接器腳本完成的,鏈接各種文件並創建.init的信息, .text,.data,.fini等 我想知道,例如蘋果推出了一個例如10​​0MB大小的iOS更新,這個更新有它自己的一組變量 - 全局靜態常量,初始化,未初始化等等。這會導致一個新的內存映射。 那麼現在當這個更新安裝在考慮iPhone

    0熱度

    1回答

    讓我們以下面的類例如 class Shape{ public: Circle (int x): number(x){} virtual area() {return x**2;} private: int number; } 在主,我們創建對象 int main(){ Shape *foo = new Shape(8);

    0熱度

    1回答

    因此,我構建了一個簡單的操作系統,並且在從引導扇區調用內核代碼時遇到上述錯誤。我花了幾天的時間掙扎,仍然處於死衚衕。 代碼在調用KERNEL_OFFSET時失敗。我知道它的失敗,因爲我試圖跳到一個無效的部分,但我不知道如何以及在哪裏。 我也注意到它並不是真的讀取磁盤。我的load_kernel代碼要求讀取10個扇區,但似乎只有讀取。 該程序能夠進入保護模式,並能夠加載我需要從磁盤加載的內容,儘管加

    0熱度

    1回答

    我讀過每個進程(堆棧段,代碼段)有段,每個虛擬地址有段號和偏移量,這個方案允許代碼在進程之間共享。我不明白分享的想法請用一個例子來解釋分享嗎?

    -4熱度

    1回答

    考慮分段和分頁的內存管理系統,其中邏輯地址是32位,其中包括12位的偏移量,9位的段號和11位的頁碼。 ?每個頁面的大小是多少? ?每個進程的最大頁數是多少? 你能幫我嗎?謝謝

    0熱度

    1回答

    閱讀英特爾的大手冊,我發現如果你想從遠程調用返回,即調用另一個代碼段中的過程,只需發出一條返回指令(可能帶有一個立即參數來移動堆棧指針在指針彈出之後向上n個字節)。 這顯然,如果我正確地解釋事情,足以讓硬件將段選擇器和偏移量都彈出到正確的寄存器中。 但是,系統如何知道返回值應該是遠遠的返回值,並且偏移量和選擇器都需要被彈出? 如果硬件剛剛彈出偏移指針,而不是後面的選擇器,那麼您將指向右偏移量,但指

    0熱度

    1回答

    我在遇到以下一段代碼時遇到了問題。我正在使用Boost來進行矩陣乘法。我正在使用Gtesting來測試我的代碼。當我測試下面的代碼時,我得到以下錯誤。 Segmentation fault (core dumped) 我知道這與我正在使用的指針有關,但我找不到錯誤。我嘗試了幾件事,但沒有運氣。我的代碼如下。我正在運行Ubuntu 14.04。 BLAS::matrix<double>* Pol

    0熱度

    2回答

    此問題的上下文是我在Intel處理器上使用64位地址空間。 我知道在X64中只有gs和fs段寄存器可用。所有其他段基址都設置爲0.由於段寄存器的數量是有限的,我可以直接使用數字來指示GDT嗎? 像 movq 0x12:Address, %rax ,而不是 movq %gs:Address, %rax

    1熱度

    1回答

    我想測試一下硬件是如何運行的,以防我試圖寫入段(例如DS以外的數據段可能是GS),僅用於測試目的......是否有程序集指令,允許我指定段wit.h一個偏移量並直接寫入它?