游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2688|回复: 0

新示例: 将虚拟机中的程式保存为2进制字节码

[复制链接]

2万

主题

2万

帖子

6万

积分

论坛元老

Rank: 8Rank: 8

积分
66489
QQ
发表于 2006-6-27 07:33:00 | 显示全部楼层 |阅读模式
#include<hgl/hgl.h>
#include<hgl/angelvm.h>
#include<hgl/FileStream.H>
#include<math.h>
#include<stdio.h>

using namespace hgl;
//--------------------------------------------------------------------------------------------------
void CreateAndSave()
{
    char script[]=  "void main()\n"
                    "{\n"
                    " test_value=sin(2);\n"
                    "}";

    AngelVM vm;                                         //定义虚拟机
    float value;
    FileStream fs;                                      //定义文件流

    vm.SetGlobalValue("float test_value",&value);       //设定变量映射
    vm.SetGlobalFunc("double sin(double)",sin);         //设定函数映射,注意sin是标准C函数

    vm.AddScript(script);                               //添加脚本并编译

    fs.Open(L"1.bytecode",fomCreate);                   //创建文件
    vm.SaveToStream(&fs);                               //将当前虚拟机程式按字节码保存到流

    fs.Close();
}
//--------------------------------------------------------------------------------------------------
void LoadAndRun()
{
    AngelVM vm;
    float value;
    FileStream fs;

    vm.SetGlobalValue("float test_value",&value);       //设定变量映射
    vm.SetGlobalFunc("double sin(double)",sin);         //设定函数映射,注意sin是标准C函数

    fs.Open(L"1.bytecode",fomOpenRead);                 //打开文件
    vm.LoadFromStream(&fs);                             //从流中加载字节码

    fs.Close();                                         //关闭文件

    vm.Run();                                           //运行虚拟机中的程式

    printf("value=%f",value);                           //输出结果
}

void GameMain(char *)
{
    CreateAndSave();                    //创建并保存成字节码
    LoadAndRun();                       //加载字节码并运行
}
//--------------------------------------------------------------------------------------------------
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2024-11-24 10:38

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表