From c27c5b70ee4cec4ea90d9bb2e30793b5a71f8423 Mon Sep 17 00:00:00 2001 From: ValKmjolnir Date: Thu, 16 Dec 2021 23:53:13 +0800 Subject: [PATCH] little update --- lib.nas | 1 + module/fib.cpp | 5 ++++- nasal_codegen.h | 4 ++-- nasal_vm.h | 5 +++-- 4 files changed, 10 insertions(+), 5 deletions(-) diff --git a/lib.nas b/lib.nas index 2863929..06ef7e7 100644 --- a/lib.nas +++ b/lib.nas @@ -94,6 +94,7 @@ var math= atan2: func(x,y){return __builtin_atan2(x,y);}, isnan: func(x) {return __builtin_isnan(x); } }; + var D2R=math.pi/180; var FPS2KT=0.5925; var FT2M=0.3048; diff --git a/module/fib.cpp b/module/fib.cpp index 0ccc8c0..9728b74 100644 --- a/module/fib.cpp +++ b/module/fib.cpp @@ -1,3 +1,4 @@ +#include #include "../nasal.h" double fibonaci(double x){ @@ -6,15 +7,17 @@ double fibonaci(double x){ return fibonaci(x-1)+fibonaci(x-2); } extern "C" nasal_ref fib(std::vector& args,nasal_gc& gc){ + std::cout<<"[mod] this is the first test module of nasal\n"; nasal_ref num=args[0]; if(num.type!=vm_num) return builtin_err("extern_fib","\"num\" must be number"); return {vm_num,fibonaci(num.to_number())}; } extern "C" nasal_ref quick_fib(std::vector& args,nasal_gc& gc){ + std::cout<<"[mod] this is the first test module of nasal\n"; nasal_ref num=args[0]; 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) return num; double a=1,b=1,res=0; diff --git a/nasal_codegen.h b/nasal_codegen.h index 811faf4..6689a9f 100644 --- a/nasal_codegen.h +++ b/nasal_codegen.h @@ -202,8 +202,8 @@ private: std::vector code; std::list> continue_ptr; std::list> break_ptr; - std::vector global; - std::list> local; + std::vector global; // global : max 4095 values + std::list> local; // local : max 32768 upvalues 65536 values void die(const std::string,const int); void regist_number(const double); diff --git a/nasal_vm.h b/nasal_vm.h index 95d9324..b7fc9d1 100644 --- a/nasal_vm.h +++ b/nasal_vm.h @@ -134,7 +134,7 @@ void nasal_vm::valinfo(nasal_ref& val) switch(val.type) { 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_nil: printf("\t| nil |\n");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_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_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)