
动态加载
z_space
这个作者很懒,什么都没留下…
展开
-
自写malloc函数的实现
转向自己的博客malloc函数的实现原创 2019-11-28 19:55:00 · 797 阅读 · 0 评论 -
动态加载新问题
中断问题:中断不知道何时回来,中断来时,r9的值可能处于不同的变量域,如果A程序中注册了中断号48,这个时候A程序调用了B程序的代码,那么变量域将切换到B程序,这时如果中断48号来临,那么将会出现变量域为B程序, 但是中断函数中缺要使用A程序变量域中的变量,必然导致死机。该问题解决办法比较麻烦,可以采用在注册中断函数时,在中间插入中断跳转函数,类似于函数重定向,中断来临时先执行中断跳转函数...原创 2019-11-04 14:36:24 · 247 阅读 · 0 评论 -
重定向--reloc连接参数
原创 2019-11-04 09:22:38 · 571 阅读 · 0 评论 -
共享库与动态加载的实现
下面是对共享库与动态加载在操作系统中自己实现的一些思路,最终目的实现一个不带mmu单片机上的:具体实现如下:目前已经实现单个的共享库加载到内存的任何位置,多个共享库加载的思路如下:1)运行一个程序或者共享库。2)在程序头表中查找INTERP项,如果存在找到解释器,并运行(这里的解释器并不是去解释代码运行,而是用来重定向代码的,并不会影响代码的运行效率)3)重定向代码4)完成目前微内核需要实现如下的...原创 2018-06-14 21:27:48 · 1418 阅读 · 0 评论 -
动态加载————arm 中bl指令,bl.w指令的生成代码
下面一段代码生成bl指令,在研究动态加载时,发现bl.w指令用的非常多,其实就是一个bl长跳转指令,目前动态加载以及能够实现简单的多个模块合并加载。下面就是转换的代码。u32 encoded_instruction_blw(s32 offset) { u32 bl_instruction = 0x00; u16 low=0, high=0; high |= 0x1e << 11; lo...原创 2018-05-29 13:39:21 · 5117 阅读 · 0 评论 -
elf .got .plt 表以及共享库加载原理,在没有mmu的单片机上实现共享库
之前研究了在没有mmu的单片机上实现动态加载,因为之前使用的是keil编译工具,它使用的是arm公司自己开发的编译器,很多地方不好研究。其实使用gcc也是可以开发Stm32的,最近发现一个开发工具叫tureStudio,是一个利用Eclipse与gcc组合起来的开发工具,特点是使用了gcc编译器,资料多呀,特别是对于elf文件格式的与linux下基本一模一样。下面就总结一下最近研究到的东西...原创 2018-06-12 00:54:07 · 1538 阅读 · 1 评论