Erasm++嵌入式运行时汇编器

联合创作 · 2023-10-01 01:23

Erasm++ 基于 C++ 的嵌入式运行时汇编器,是一个 C++ 的 Embedded Domain Specific Language (EDSL) 用于运行时生成代码。支持完整的编译时语法检查,其代码生成速度非常快,因为必须的数据已经做了静态计算,目前只支持 Intel 64 和 IA-32 体系架构。


示例代码:


#include <erasm/x64_addr64_data32.hpp>
#include <iostream>

typedef int (*pf_t) (int);

int main(int argc,char**argv)
{
using namespace std;
using namespace erasm::x64;
using namespace erasm::x64::addr64;
using namespace erasm::x64::addr64::data32;

byte_t buf[100];
byte_t *p = buf;
int32_t x = 2;

p += mov(p,rax,dword_ptr[rsp+8]);
p += add(p,rax,x);
p += ret(p);

pf_t f = (pf_t)buf;
int len = p - buf;
cout << "code length=" << len << endl
<< "result=" << f(argc) << endl;
return 0;
}
浏览 12
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报