我 Python ctypes 试了一下,
从 1 开始遵循一个规律: 每三个数加四
但反编译出来的明显不能用...
for i in range(0, 1000):
print(c.BEL(i))
1
5
5
5
9
9
9
13
13
13
17
17
17
从 1 开始遵循一个规律: 每三个数加四
但反编译出来的明显不能用...
irb(main):021:0> def bel n
irb(main):022:1> 4 * (n + 2) / 3 | 1
irb(main):023:1> end
(0..1000).each { |n| puts bel n }
3
5
5
7
9
9
11
13
13
15
17
17
19
def bel_asm(n)
ax = n
cx = ax + 2
dx = 1431655766
ax = cx
dx, ax = ax * dx
ax = cx
ax >>= 31
dx -= ax
ax = dx
ax <<= 2
ax += 1
return ax
end
Forwarded from interesting ¯\\_(ツ)_/¯
duangsuse::Echo
#Ruby #dev #project 在编译 MRuby 的时候由于缺少一个 Default NDK home 走了一些弯路(甚至自己定义了一个用来自动设置 NDK home 的方法), 因为现在 duangsuse 很喜欢积极修复小问题,就快速修改了一下准备提交给 mruby/mruby (改动太小就没开 new branch 没想到 mrb 要求 Create a branch which is dedicated to your change ... 留着他们 rebase 的 估计要撤下那个 commit…
Matz 自己审核了那个 PR,merge 了,不过说是他不不用 Android SDK,所以不知道会不会导致问题,如果以后有问题会 revert
https://t.me/dsuses/1772 正在直播设计 LV 虚拟机~
Telegram
duangsues.is_a? SaltedFish
我们来整理一下,顺便彻底解释所有指令语义和 stack-based 化指令(不要使用任何参数)
- LV 拥有 call-stack(带有 ret_addr 和 lazy 的 locals HashMap )、stack(LinkedList<Object>) 和 global table(Hashtable)
- LV 是基于堆栈的虚拟机,LV 只有全局表要求线程安全
- LV 支持自己的 exception 系统
- LV 支持 block,会在创建 block 时自动打包 block 的所有符号本地变量引用…
- LV 拥有 call-stack(带有 ret_addr 和 lazy 的 locals HashMap )、stack(LinkedList<Object>) 和 global table(Hashtable)
- LV 是基于堆栈的虚拟机,LV 只有全局表要求线程安全
- LV 支持自己的 exception 系统
- LV 支持 block,会在创建 block 时自动打包 block 的所有符号本地变量引用…