memory-segmentation

    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一个偏移量并直接写入它?

    -2热度

    1回答

    我正在尝试使用标记编写C的垃圾回收器&扫描策略,但我不知道如何遍历bss段,数据段。我如何获得这些段的开始地址和结束地址,以及如何找到堆栈的底部?