little update

This commit is contained in:
ValKmjolnir 2021-12-16 23:53:13 +08:00
parent 5a80258d20
commit c27c5b70ee
4 changed files with 10 additions and 5 deletions

View File

@ -94,6 +94,7 @@ var math=
atan2: func(x,y){return __builtin_atan2(x,y);}, atan2: func(x,y){return __builtin_atan2(x,y);},
isnan: func(x) {return __builtin_isnan(x); } isnan: func(x) {return __builtin_isnan(x); }
}; };
var D2R=math.pi/180; var D2R=math.pi/180;
var FPS2KT=0.5925; var FPS2KT=0.5925;
var FT2M=0.3048; var FT2M=0.3048;

View File

@ -1,3 +1,4 @@
#include <iostream>
#include "../nasal.h" #include "../nasal.h"
double fibonaci(double x){ double fibonaci(double x){
@ -6,15 +7,17 @@ double fibonaci(double x){
return fibonaci(x-1)+fibonaci(x-2); return fibonaci(x-1)+fibonaci(x-2);
} }
extern "C" nasal_ref fib(std::vector<nasal_ref>& args,nasal_gc& gc){ extern "C" nasal_ref fib(std::vector<nasal_ref>& args,nasal_gc& gc){
std::cout<<"[mod] this is the first test module of nasal\n";
nasal_ref num=args[0]; nasal_ref num=args[0];
if(num.type!=vm_num) if(num.type!=vm_num)
return builtin_err("extern_fib","\"num\" must be number"); return builtin_err("extern_fib","\"num\" must be number");
return {vm_num,fibonaci(num.to_number())}; return {vm_num,fibonaci(num.to_number())};
} }
extern "C" nasal_ref quick_fib(std::vector<nasal_ref>& args,nasal_gc& gc){ extern "C" nasal_ref quick_fib(std::vector<nasal_ref>& args,nasal_gc& gc){
std::cout<<"[mod] this is the first test module of nasal\n";
nasal_ref num=args[0]; nasal_ref num=args[0];
if(num.type!=vm_num) if(num.type!=vm_num)
return builtin_err("extern_fib","\"num\" must be number"); return builtin_err("extern_quick_fib","\"num\" must be number");
if(num.num()<2) if(num.num()<2)
return num; return num;
double a=1,b=1,res=0; double a=1,b=1,res=0;

View File

@ -202,8 +202,8 @@ private:
std::vector<opcode> code; std::vector<opcode> code;
std::list<std::vector<int>> continue_ptr; std::list<std::vector<int>> continue_ptr;
std::list<std::vector<int>> break_ptr; std::list<std::vector<int>> break_ptr;
std::vector<std::string> global; std::vector<std::string> global; // global : max 4095 values
std::list<std::vector<std::string>> local; std::list<std::vector<std::string>> local; // local : max 32768 upvalues 65536 values
void die(const std::string,const int); void die(const std::string,const int);
void regist_number(const double); void regist_number(const double);

View File

@ -134,7 +134,7 @@ void nasal_vm::valinfo(nasal_ref& val)
switch(val.type) switch(val.type)
{ {
case vm_none: printf("\t| null |\n");break; case vm_none: printf("\t| null |\n");break;
case vm_ret: printf("\t| addr | 0x%x\n",val.ret());break; case vm_ret: printf("\t| addr | pc=0x%x\n",val.ret());break;
case vm_cnt: printf("\t| cnt | %ld\n",val.cnt());break; case vm_cnt: printf("\t| cnt | %ld\n",val.cnt());break;
case vm_nil: printf("\t| nil |\n");break; case vm_nil: printf("\t| nil |\n");break;
case vm_num: printf("\t| num | %lf\n",val.num());break; case vm_num: printf("\t| num | %lf\n",val.num());break;
@ -142,7 +142,8 @@ void nasal_vm::valinfo(nasal_ref& val)
case vm_func: printf("\t| func | <0x%lx> entry=0x%x\n",(uint64_t)p,val.func()->entry);break; case vm_func: printf("\t| func | <0x%lx> entry=0x%x\n",(uint64_t)p,val.func()->entry);break;
case vm_vec: printf("\t| vec | <0x%lx> [%lu val]\n",(uint64_t)p,val.vec()->elems.size());break; case vm_vec: printf("\t| vec | <0x%lx> [%lu val]\n",(uint64_t)p,val.vec()->elems.size());break;
case vm_hash: printf("\t| hash | <0x%lx> {%lu member}\n",(uint64_t)p,val.hash()->elems.size());break; case vm_hash: printf("\t| hash | <0x%lx> {%lu member}\n",(uint64_t)p,val.hash()->elems.size());break;
case vm_obj: printf("\t| obj | <0x%lx>\n",(uint64_t)p);break; case vm_obj: printf("\t| obj | <0x%lx> object=0x%lx\n",(uint64_t)p,(uint64_t)val.obj()->ptr);break;
default: printf("\t| ??? | <0x%lx>\n",(uint64_t)p);break;
} }
} }
void nasal_vm::bytecodeinfo(const uint32_t p) void nasal_vm::bytecodeinfo(const uint32_t p)