这样的命令,执行后cmd窗口中运行的程序就在指定目录路径下了。
在开始的时候设置起始代码段。1,首先,进入目录LINK,运行make生成arm-linux-ld选项为“-Ttext 0x00000000”的反汇编码ttt.s。
然后,修改Makefile:将第4、7行的“#”去掉,在第3、6行前加上“#”,运行make生成arm-linux-ld选项为“-Ttext 0x30000000”的反汇编码ttt2.s,link.s程序中用到两种跳转方法:b跳转指令、直接向pc寄存器赋值。
然后,先把在不同“-Ttext”选项下,生成的可执行文件的反汇编码列出来,再详细分析这两种不同指令带来的差异。
然后,让第一张图片从最左面开始,滚动方向是从左向右,而且让第一张图片和最后一张图片要连接在一起,现在是一个滚动完成之后,图片又从最右边开始向左滚动。
然后,在应用程序中,栈和堆的起始地址是有约定的。但是内核本身没有另外一个更高层的程序来管理内核的地址空间,所以内核空间的栈的组织,和应用程序有所不同。内核的栈如果溢出时,不能像应用程序那样产生一个page fault,然后分配新的地址空间,继续使用。内核的栈如果溢出,没有人知道,除非溢出的地方影响了运行,让程序crash。
后,堆的空间的扩大靠brk()系统调用,而内核的内存使用,get_free_pages来实现的(虽然上层封装了kmalloc和vmalloc),这个基本上是自己管理自己,由于Linux内核还不支持自己的swapping,所以内核如果找不到可用的页框了,也就没办法了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)