Skip to content

Instantly share code, notes, and snippets.

@dotbmp
dotbmp / bit_extension.odin
Last active January 18, 2024 15:04
Sign-Extension and Zero-Extension Helpers in Odin
package bit_extension
import "core:intrinsics"
sign_extend :: #force_inline proc "contextless" ($D: typeid, src: $S) -> D where
intrinsics.type_is_integer(D) &&
intrinsics.type_is_integer(S) &&
size_of(D) >= size_of(S)
{
when size_of(S) == size_of(i128) {
@dotbmp
dotbmp / evil_goto.odin
Last active November 29, 2023 23:57
Goto for Odin (Evil)
package evil_goto
import "core:fmt"
import "core:mem"
import "core:sys/windows"
label: proc"c"()->rawptr
goto: proc"c"(rawptr)->!
__setup := proc() -> int {
step :: inline proc(using hart: ^Hart) {
using instr := decode((^u32)(&memory[pc])^);
next_pc := pc + size_of(u32);
nulltarget: u64 = ---;
dst := rd < 32 && rd > 0 ? &registers[rd] : &nulltarget;
switch mask {
case LUI: (^i64)(dst)^ = i64(imm);
@dotbmp
dotbmp / original
Created March 13, 2018 04:22
incorrect results Odin vs C++
https://cognitivedemons.wordpress.com/2017/07/06/a-neural-network-in-10-lines-of-c-code/
@dotbmp
dotbmp / lua.odin
Created October 18, 2017 05:27
Lua binding for Odin
foreign import lua_c "lua53.lib"
// @todo: add luajit support
// @ref: https://www.lua.org/manual/5.3/manual.html#4
// @ref:
// @region luaconf.h