LicenseToCIL:在F#中半安全地生成CIL

时间:2024-05-28 18:14:39
【文件属性】:

文件名称:LicenseToCIL:在F#中半安全地生成CIL

文件大小:26KB

文件格式:ZIP

更新时间:2024-05-28 18:14:39

cil opcodes F#

它是什么? 这是一个包装.NET System.Reflection.Emit API的库,用于在运行时生成CIL代码。 包装器通过执行以下两项操作,增加了一点类型安全: 每个操作码的专用功能 每个CIL操作码都有其自己的功能。 这样,用于生成ldstr操作码的函数采用string 。 这听起来似乎很明显,但是底层的System.Reflection.Emit API将每个操作码都表示为一个枚举,并且没有阻止您编写generator.Emit(OpCodes.Ldstr, 27) 。 经过类型检查的堆叠深度 大多数操作码具有一致的堆栈行为。 例如, add操作码要求堆栈上有两个数字。 它将弹出两个,添加它们,然后推送结果。 CIL许可证将这种堆栈行为表示为类型Op<'x SS, 'x S> ,这表示堆栈上至少必须有两个元素,添加后将在其中放置一个元素。 您发出的操作码序列必须具有“排


【文件预览】:
LicenseToCIL-master
----LicenseToCIL.sln(2KB)
----LicenseToCIL()
--------Types.fs(124B)
--------Delegates.fs(620B)
--------Stack.fs(379B)
--------Ops.fs(25KB)
--------LicenseToCIL.fsproj(1KB)
--------AssemblyInfo.fs(2KB)
--------Switch.fs(5KB)
--------CILBuilder.fs(2KB)
--------IL.fs(2KB)
--------StringSwitch.fs(8KB)
--------Ops.fsi(30KB)
----LICENSE(1KB)
----.gitignore(4KB)
----README.md(6KB)
----LicenseToCIL.Examples()
--------Switches.fs(11KB)
--------Factorial.fs(3KB)
--------LicenseToCIL.Examples.fsproj(628B)

网友评论