当前位置: 首页 > news >正文

南通网站建设祥云做销售在哪些网站发贴

南通网站建设祥云,做销售在哪些网站发贴,东莞整合网站建设营销,做网站的字体大小1. 背景说明 Github地址:https://github.com/ptitSeb/box86 官方推荐的视频教程:Box86/Box64视频教程网盘 2. 程序执行主体图 Box86版本: Box86 with Dynarec v0.3.4 主函数会执行一大堆的初始化工作,包括但不限于:BOX上下文 …

1. 背景说明

Github地址:https://github.com/ptitSeb/box86

官方推荐的视频教程:Box86/Box64视频教程网盘

2. 程序执行主体图

Box86版本: Box86 with Dynarec v0.3.4

在这里插入图片描述
主函数会执行一大堆的初始化工作,包括但不限于:BOX上下文 、内存部局、空间分配、x86指令模拟器、ELF文件 、依赖库文件、所有准备工作完成之后,在x86模拟器中按着IP指针,开始顺序解释执行代码块

3. 代码说明-main函数

/src/main.c
因为main函数代码量比较大,下边是精简后的代码,省略了大部分非主干流程代码,这样看起来就容易很多了。

int main(int argc, const char **argv, char **env)
{init_malloc_hook();init_auxval(argc, argv, environ?environ:env);.........//创建一个Box86的上下文、这个上下文将会持有着,在转译时可能用到的全部信息my_context = NewBox86Context(argc - nextarg);//检查并读取必须用到的环境变量信息(例如:LD_LIBRARY_PATH、BOX86_EMULATED_LIBS、libssl.so、BOX86_PATH 等等)LoadEnvVars(my_context);.........//通过 ParseElfHeader 方法将当前要执行 ELF 文件的头信息解析出对应的 elfheader_t 结构 elfheader_t *elf_header = LoadAndCheckElfHeader(f, my_context->fullpath, 1);/* 将 ELF 头信息添加到当前Box86的上下文中CalcLoadAddr(elf_header); //这个函数的作用是根据 ELF 文头信息来计算或确定一些关键的内存布局参数。(包括虚拟地址(vaddr)、物理地址(paddr)、内存大小(memsz)、对齐(align)、栈大小(stacksz)、栈对齐(stackalign)、TLS(线程局部存储)等等)*/AddElfHeader(my_context, elf_header);//根据 ELF 头部信息设置内存布局if(CalcLoadAddr(elf_header)) {printf_log(LOG_NONE, "Error: reading elf header of %s\n", my_context->fullpath);free_contextargv();FreeBox86Context(&my_context);FreeCollection(&ld_preload);FreeElfHeader(&elf_header);return -1;}//根据 ELF 头部信息和内存布局参数,来为 ELF 文件的加载分配内存。if(AllocLoadElfMemory(my_context, elf_header, 1)) {printf_log(LOG_NONE, "Error: loading elf %s\n", my_context->fullpath);free_contextargv();FreeBox86Context(&my_context);FreeCollection(&ld_preload);FreeElfHeader(&elf_header);return -1;}/*设置bss段空间以及未初始化的静态和全局变量空间
CalcStackSize(my_context); //计算栈空间大小以及内存对齐方式,初始值为8M空间、4Byte对齐,再根据context->elfs数组值来遍历,如果数组中有值大于初始值,则调整为数组中的最大值, 然后用 mmap 分配空间*/my_context->brk = ElfGetBrk(elf_header);.........//通过Box86的上下文配置,调用internalX86Setup创建了一个X86运行的模拟器x86emu_t *emu = NewX86Emu(my_context, my_context->ep, (uintptr_t)my_context->stack, my_context->stacksz, 0);// stack setup is much more complicated then just that!SetupInitialStack(emu); //设置x86模拟器初始栈SetupX86Emu(emu);//按照X86应用程序的逻辑main函数的加载过程一样 ,将应用程序的参数加到EAX和EBX,以此来模拟X86程序的启动SetEAX(emu, my_context->argc);SetEBX(emu, (uint32_t)my_context->argv);.........//负责解析ELF文件中的符号信息,并将它们分类到不同的符号表中,以便于后续的符号解析和链接使用AddSymbols(my_context->maplib, GetMapSymbols(elf_header), GetWeakSymbols(elf_header), GetLocalSymbols(elf_header), elf_header);.........//负责在加载主 ELF 文件时,将其信息添加到链接映射中,以便动态链接器可以正确地解析符号和执行重定位。AddMainElfToLinkmap(elf_header);.........//解析 ELF 文件的动态依赖,并加载相应的库if(LoadNeededLibs(elf_header, my_context->maplib, 0, 0, my_context, emu)) {printf_log(LOG_NONE, "Error: loading needed libs in elf %s\n", my_context->argv[0]);FreeBox86Context(&my_context);return -1;}.........//解释运行X86程序 DynaRun(emu);// Get EAXint ret = GetEAX(emu);.........return ret;
}

4. 代码说明-xxx函数

5. 代码说明-xxx函数

6. 代码说明-xxx函数

http://www.yayakq.cn/news/853232/

相关文章:

  • 网页设计视频教程-响应式手机网站制作wordpress文章点不开
  • seo优化网站优化排名促销礼品网站建设
  • 泰安信誉好的网络推广公司搜索引擎优化员简历
  • 石大网页设计与网站建设客观题电子商务专业毕业从事什么工作
  • 小程序模板做视频网站网站设计的必要性
  • 长春专业网站建设公司排名网站关键词密度过高
  • 某学校网站的安全建设方案江苏易销 网站建设
  • 用wordpress建站一定要先有域名和空间吗英文集团网站设计建设
  • 天津注册公司网站外发加工网邀请码
  • 东圃手机网站建设ip代理免费
  • 大兴网站建设设计公司宣城公司做网站
  • 泰州cms建站模板济南企业网站建设
  • 影视会员网站怎么建设网站设计所需软件
  • 重庆南川网站制作公司电话制作网站需要怎么做的
  • 如何做好电商网站平面设计长沙0731房地产网
  • 济南市城市建设规划局官方网站网站制作 万网
  • 网站建设vs网络推广杭江建设有限公司
  • 哪个网站可以做图片网站建设的一般流程
  • 苏州高端网站设计机构北京住房建设官方网站
  • 做网站游戏怎么挣钱wordpress新用户默认角色设置
  • 做网站买什么服务器 便宜哪里有网站建设官网
  • 网站建设联系方式品牌网站制作简创网络
  • 给网站平台做推广叫什么建立组词
  • 太原建设北路小学网站用c 做网站
  • 莆田网站建站做一个一般的网站需要多少钱
  • 网站广告图怎么做故宫网站建设
  • 湖州公司做网站织梦 调用网站地址
  • 关于域名和主机论坛的网站广州网络营销外包怎样
  • 北京营销型网站建设培训班建立网站加强家园沟通和联系的做法有何利弊
  • 网站建设淘宝永安市住房与城乡建设局网站