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

2402d,d的静态构造器

原文
在D中是如何实现的静态构造器?印象是,druntime启动代码遍历,在可执行文件中存储的某种表.但显然这是依赖操作系统的,我试让静态构造器wasm中工作,但找不到方法.

我研究的druntime代码都勾挂到依赖于可执行格式的东西,显然还没有wasm的.

这在wasm中甚至可能吗,或我是否遗漏了一些明显的东西

它主要依赖于二进制格式,是编译器druntime之间的合作.
一般,编译器发射不可链接时去掉的指向生成ModuleInfo结构的指针到一个(__minfo,.minfo等)特殊节,把每个.d模块编译到特定的目标文件中.
链接到可执行文件/共享库后,在数据段的命名节连续存储每个链接目标文件的所有.d模块的ModuleInfo指针.

这样,druntime可通过取ModuleInfo指针的数据区间(如,通过链接器生成的__{start,stop}___minfoELF括号符号)来反射链接二进制文件的所有D模块/ModuleInfos.从那里可推导出模块构造器,单元测试等.

这在wasm中甚至可能吗,还是我错过了一些明显的东西

LDC有个外来平台回退,它使用链表编译器生成的,在初化程序时(按未定义的顺序)插入ModuleInfo指针,由C运行时,在Cmain()之前调用的CRT构造器.

因此,如果wasm不支持命名节/数据区间,但"隐式"支持可能潜在路线的初化器函数(CRT构造器).

哦,好吧,wasm-ld(即lld)支持与ELF完全相同的神奇__{start,stop}_*符号:这里

哦,伙计,我甚至为此添加了一个LDC测试,但差不多4年前就忘记了.😄
这里

相关文章:

  • 多线程基础详解(看到就是赚到)
  • 预测模型:MATLAB线性回归
  • 在 VMware 虚拟机上安装 CentOS系统 完整(全图文)教程
  • K8S之Pod常见的状态和重启策略
  • 人工智能之无约束最优化与有约束最优化
  • C# Task的使用
  • 编码技巧——基于RedisTemplate的RedisClient实现、操作Lua脚本
  • python二维数组初始化的一个极其隐蔽的bug(浅拷贝)
  • Win32 SDK Gui编程系列之--ListView自绘OwnerDraw(续)
  • 幻兽帕鲁(Palworld)允许自建私服,它是怎么挣钱的呢?
  • 融资项目——配置redis
  • Go语言每日一练——链表篇(四)
  • c实现链表
  • 【网工】华为设备命令学习(Telnet)
  • sklearn实现数据标准化(Standardization)和归一化(Normalization)
  • “大数据应用场景”之隔壁老王(连载四)
  • 【JavaScript】通过闭包创建具有私有属性的实例对象
  • 【跃迁之路】【444天】程序员高效学习方法论探索系列(实验阶段201-2018.04.25)...
  • JavaScript 一些 DOM 的知识点
  • React-redux的原理以及使用
  • springboot_database项目介绍
  • 飞驰在Mesos的涡轮引擎上
  • 分类模型——Logistics Regression
  • 分享一个自己写的基于canvas的原生js图片爆炸插件
  • 学习笔记:对象,原型和继承(1)
  • 一起来学SpringBoot | 第三篇:SpringBoot日志配置
  • 一天一个设计模式之JS实现——适配器模式
  • 应用生命周期终极 DevOps 工具包
  • 与 ConTeXt MkIV 官方文档的接驳
  • 职业生涯 一个六年开发经验的女程序员的心声。
  • MyCAT水平分库
  • ​​​​​​​​​​​​​​汽车网络信息安全分析方法论
  • #etcd#安装时出错
  • #stm32驱动外设模块总结w5500模块
  • #大学#套接字
  • $jQuery 重写Alert样式方法
  • (C#)Windows Shell 外壳编程系列9 - QueryInfo 扩展提示
  • (Matalb回归预测)PSO-BP粒子群算法优化BP神经网络的多维回归预测
  • (Matlab)使用竞争神经网络实现数据聚类
  • (pojstep1.3.1)1017(构造法模拟)
  • (zhuan) 一些RL的文献(及笔记)
  • (补)B+树一些思想
  • (附源码)ssm高校实验室 毕业设计 800008
  • (力扣记录)1448. 统计二叉树中好节点的数目
  • (转)自己动手搭建Nginx+memcache+xdebug+php运行环境绿色版 For windows版
  • (最全解法)输入一个整数,输出该数二进制表示中1的个数。
  • .Family_物联网
  • .net 按比例显示图片的缩略图
  • .net 程序发生了一个不可捕获的异常
  • .pop ----remove 删除
  • /使用匿名内部类来复写Handler当中的handlerMessage()方法
  • ?php echo ?,?php echo Hello world!;?
  • @hook扩展分析
  • @WebService和@WebMethod注解的用法
  • [ vulhub漏洞复现篇 ] ThinkPHP 5.0.23-Rce