Add C function u64_to_num

This commit is contained in:
Enrico Lumetti 2022-05-12 11:55:51 +02:00
parent f457e31740
commit 5aa1a031fa
10 changed files with 33 additions and 21 deletions

2
.gitignore vendored
View File

@ -1,2 +1,2 @@
*.luo
lunaclib/lunaclib.so
lunaclib.so

31
lunaclib.c Normal file
View File

@ -0,0 +1,31 @@
#include <stdio.h>
#include <stdint.h>
#include <lua.h>
#include <lauxlib.h>
static int u64_to_num(lua_State* L) {
#ifndef LUA_NUMBER_DOUBLE
#error Lua must be compiled with number as a double floating point
#endif
const uint64_t h1 = luaL_checkint(L, 1);
const uint64_t h2 = luaL_checkint(L, 2);
const uint64_t stacked = (h2 << 32) | h1;
double res = *(double *)((char *)&stacked);
lua_pushnumber(L, res);
return 1;
}
static const struct luaL_Reg lib[] = {
{"u64_to_num", u64_to_num},
{NULL, NULL}
};
int luaopen_lunaclib(lua_State *L) {
luaL_openlib(L, "lunaclib", lib, 0);
return 1;
}

View File

@ -1,19 +0,0 @@
#include <stdio.h>
#include <lua.h>
#include <lauxlib.h>
static int hello(lua_State* L) {
puts("Hello World!");
return 0;
}
static const struct luaL_Reg lib[] = {
{"hello", hello},
{NULL, NULL}
};
int luaopen_lib (lua_State *L) {
luaL_openlib(L, "lunaclib", lib, 0);
return 1;
}

View File

@ -2,7 +2,7 @@ local readbc = require('readbc')
local vm = require('vm')
local VM = vm.VM
fp = io.open('tests/test1.luo')
fp = io.open('snippets/test1.luo')
header = readbc.read_header(fp)
proto = readbc.read_proto(fp)
fp:close()