Forwarded from Deleted Account
[hcl.pc] 我没有接触过内核开发,但是我想知道这些 hardening 的东西是否真的很难调试(debug)
Forwarded from [Archived] yvChannel (yv = nullptr;)
Telegraph
蠢货王尼玛其人
原文发表自微信公众号“摇滚客”,已被删除。 距离《暴走大事件》全网下架过去整整十天了。 10天,240个小时,恍若隔世。 一个叫王尼玛的大头死变态,摘下了头套,活像一个“蠢货”。 作为一个知名脱口秀主持人,作为一个一千六百万粉丝的微博大V,竟然想不开去干愤青的事。 一面势单力薄地挑战不可能战胜的巨兽,一面发了疯似的煽动年轻人和他一起反抗,你说他蠢不蠢? 豫章书院说没有学生自杀那就没人自杀,人家这么正规一学校能骗你吗? 人家家长为了孩子好,跑去声援学校,你非骂人家“帮凶”,不封你封谁呢? 人人都说皇帝的新…
#project 一个还没有推广的项目计划暂时停坑了…
本来设计已经比较明确了,
部分优化,OpCodes,编译器,面向对象,语法糖
设计实现什么的 已经计划好了…
之前一个比较难解决的Lambda in MinVM问题也成功以相对较低的性能损耗设计好了(
当然如果好奇怎么设计的欢迎来问
在做成前不想搞大新闻然后被大佬批判一番…
而且这个也有点“不务正业”的感觉(因为之前的计划并没有完成
主要是因为 不能熬夜 而且学校花掉很多时间 无法供应相应文档编写和实现什么的…
方便大家理解这个项目 我就列一点微小的工作,还有很多漏洞等待弥补:
//Min
def func()
puts
end
func //Function call
//MinVM Assembly
.goto指令会在执行时自动被翻译为jump
goto func_end
:tag func
scope
puts
scope_end
:tag func_end
goto func
//lambda
10.times do i
puts i.toString
end
//MinVM Assembly
.call-x 意味着调用寄存器内对象的方法
.寄存器里存 vector 是参数传递的一种方法(
lambda:
vec-pop
.这个命名冲突还尚待解决…
move __arg0
get __arg0
call-x toString
move-result
puts
move __lambda
new-int 10
goto int_t_init
move __int_t_init_result
vec-new
vec-push __int_t_init_result
vec-push __lambda
goto int_ttimes
本来设计已经比较明确了,
部分优化,OpCodes,编译器,面向对象,语法糖
设计实现什么的 已经计划好了…
之前一个比较难解决的Lambda in MinVM问题也成功以相对较低的性能损耗设计好了(
当然如果好奇怎么设计的欢迎来问
在做成前不想搞大新闻然后被大佬批判一番…
而且这个也有点“不务正业”的感觉(因为之前的计划并没有完成
主要是因为 不能熬夜 而且学校花掉很多时间 无法供应相应文档编写和实现什么的…
方便大家理解这个项目 我就列一点微小的工作,还有很多漏洞等待弥补:
//Min
def func()
puts
end
func //Function call
//MinVM Assembly
.goto指令会在执行时自动被翻译为jump
goto func_end
:tag func
scope
puts
scope_end
:tag func_end
goto func
//lambda
10.times do i
puts i.toString
end
//MinVM Assembly
.call-x 意味着调用寄存器内对象的方法
.寄存器里存 vector 是参数传递的一种方法(
lambda:
vec-pop
.这个命名冲突还尚待解决…
move __arg0
get __arg0
call-x toString
move-result
puts
move __lambda
new-int 10
goto int_t_init
move __int_t_init_result
vec-new
vec-push __int_t_init_result
vec-push __lambda
goto int_ttimes
duangsuse::Echo
#project 一个还没有推广的项目计划暂时停坑了… 本来设计已经比较明确了, 部分优化,OpCodes,编译器,面向对象,语法糖 设计实现什么的 已经计划好了… 之前一个比较难解决的Lambda in MinVM问题也成功以相对较低的性能损耗设计好了( 当然如果好奇怎么设计的欢迎来问 在做成前不想搞大新闻然后被大佬批判一番… 而且这个也有点“不务正业”的感觉(因为之前的计划并没有完成 主要是因为 不能熬夜 而且学校花掉很多时间 无法供应相应文档编写和实现什么的… 方便大家理解这个项目 我…
duangsuse::Echo
//省略部分 class int def _init(val) @value=val end def times(c) i=@value while i > 0 do invoke c i-- end end end
虽然我不是编译器( 但是我猜一下编译后的:
🙈后面头都晕了
可怜没有更多时间给我去写MinVM了,也没有时间设计编译器了
map-new int_t
.ctor
lambda:
scope int:_init
vec-pop
move __arg0
get int_t
map-add value __arg0
scope_end
move __int:_init
get int_t
map-add int:_init __int:_init
.method times(func)
lambda:
scope
vec-pop
move __self
vec-pop
move __arg0
get __self
:tag while_i_>_0
lambda:
begin __arg0
get __self
map-index value
calc-sub
move __result
get __self
map-move value __result
move __lambda
get __self
map-index value
op-gtz?
if __lambda
:tag while_i_>_0_end
scope_end
map-add int:times __int:times
🙈后面头都晕了
可怜没有更多时间给我去写MinVM了,也没有时间设计编译器了
duangsuse::Echo
虽然我不是编译器( 但是我猜一下编译后的: map-new int_t .ctor lambda: scope int:_init vec-pop move __arg0 get int_t map-add value __arg0 scope_end move __int:_init get int_t map-add int:_init __int:_init .method times(func) lambda: scope vec-pop move __self vec-pop…
嗯后面还有一个东西要写🌚
不写了 手动编译器duangsuse(
.后面是注释,对虚拟机没有任何意义(
λ的优化是lazy_compile 用到时才编译,否则只是普通的Min VM汇编代码而已, 所谓lambda只不过是一个包含相应lambda命令序列索引的JavaObject而已(
要写的就是为了导出方法的stub function(
面向对象的方法和Lua差不多
本来还打算搞个AOT(2Java Bytecode MVM的
根本没时间设计
参考的程序设计语言有HouLang, Ruby, Lua, BeanShell, Lemon这些 可惜就没时间设计实现了😐
不写了 手动编译器duangsuse(
.后面是注释,对虚拟机没有任何意义(
λ的优化是lazy_compile 用到时才编译,否则只是普通的Min VM汇编代码而已, 所谓lambda只不过是一个包含相应lambda命令序列索引的JavaObject而已(
要写的就是为了导出方法的stub function(
面向对象的方法和Lua差不多
本来还打算搞个AOT(2Java Bytecode MVM的
根本没时间设计
参考的程序设计语言有HouLang, Ruby, Lua, BeanShell, Lemon这些 可惜就没时间设计实现了😐