psi*_*lia 4 c embedded assembly
我转储我的RAM(它的一部分 - 仅代码段),以便找到放置C函数的位置.我没有map文件,我不知道boot/init例程究竟是做什么的.
我将程序加载到RAM中,然后如果我转储RAM,很难找到确切的功能在哪里.我想在C源代码中使用不同的模式,以便在内存转储中识别它们.
我尝试使用包含函数名称的不同第一个变量来启动每个函数,例如:
char this_function_name[]="main";
Run Code Online (Sandbox Code Playgroud)
但它不起作用,因为此字符串将放在数据段中.
我有简单的16位RISC CPU和实验专有编译器(没有GCC或任何众所周知的).系统具有16Mb的RAM,与其他应用程序共享(引导加载程序,下载程序).几乎不可能找到一个独特的N NOP或smth序列.像0xABCD.我想在RAM中找到所有函数,所以我需要在RAM-dump中可见的唯一函数标识符.
什么是代码段的最佳模式?
如果是我,我会使用符号表,例如"nm a.out | grep main".获取您想要的任何功能的真实地址.
如果你真的没有符号表,那就自己做吧.
struct tab {
void *addr;
char name[100]; // For ease of searching, use an array.
} symtab[] = {
{ (void*)main, "main" },
{ (void*)otherfunc, "otherfunc" },
};
Run Code Online (Sandbox Code Playgroud)
搜索名称,地址将紧接在其之前.转到地址.;-)