嵌入式運行時匯編器 Erasm++

jopen 12年前發布 | 19K 次閱讀 C/C++開發 C/C++

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;
}

項目主頁:http://www.baiduhome.net/lib/view/home/1326600998702

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!