duangsues.is_a? SaltedFish
60 subscribers
609 photos
6 videos
91 files
562 links
🌶🐔🐟 duangsuse 的日常
尤其喜欢发些奇奇怪怪的东西
和转载别人的东西
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
duangsuse 生活细则:

暑假结束了

母上大人前几天因为某种肾脏上的疾病和感冒和并发心脏急性病住院了
开始还真的比较危险呢
现在一切平安

感谢上帝
duangsuse 坏耶!ʕ•̀ω•́ʔ✧ |SSF🐟|离校一月|!高一 日常RustRubyPython Java JavaScriptLua osdev PL eng 还有其他5个非日常能力( (= (has_telegram duangsuse) true)
This media is not supported in your browser
VIEW IN TELEGRAM
接下来本频道将承担装载 duangsuse 垃圾想法的艰巨任务,又是一大堆
+ 首先让我解释对 Fushion App 的看法...

也是一个寒歌的作品,我觉得挺好的,虽然之前我明显不是这么想,但现在我明显是这个态度(

+ Gekyll

如题,是一个老项目的翻盘作吧,上周有新动态,可惜依然不完成
这次已经基本想好了,准备彻底整装待发,明天早上写 HTML templates

lib.rb 里放置生成器具后端(填充、输出到文件)的实现,而 CLI 类则负责其前端(设置后端生成器对象,启动生成过程),启动脚本文件只负责控制权转交 CLI 类
因为我的时间毕竟有限而且事有多所以... GitApk 暂时只能做到这步,GeekApk 是不是崇才那样的东西也看它了,我打算好好学习 CS(跑

+ ApkBundler Scheme(Kotlin/JVM、JavaScript ES6)

如果可能的话,我愿意尝试 Kotlin/Multiplatform 来解决这两个,不过对 JS 来说其实 Kt 里必须写的东西其实不必要,比如数值类型自动提升、Number 对象操作等

ApkBundler 是我打算彻底独立于 GeekApk 和 GitApk 的作品,设计上会恢复之前 GeekApk 早期的大部分设计、包括依赖系统
我不知道我打不打算真正把它当一个 “商业项目” 运作,当然即使商业也只是商业标准,个人兴趣还是主打(

(当然,如果是商业项目的话,首先必须等我高中毕业了,其次,它得符合天朝变态的审查制度,但它明显会成为最良心的国产软件,而且像极了以前的酷安
(当然,我不会“借鉴”现在的酷安,它只会面向发烧友,至少是我运行的时候
(当然,我保存了之前所有真正有价值的设计文档,所以基本不会丢失好的设计,包括 PM(私信)也会加上
(当然,之前我貌似在 @dsuse 上发过一些要加的东西

ApkBundler Scheme 可能是,大家都知道很多极具扩展性的、著名的、Geek 的软件都拥有自己的脚本语言来扩展自己的功能(比如,Emacs/Emacs Lisp、Vim/VimScript)
ApkBundler 的 Android 客户端和 Web 客户端当然会支持 Java Class 文件插件和 JavaScript 插件,但是主打依然是 ABS(ApkBundler Scheme) 和 Kotlin/ES5 混合开发

+ chinese.h

就是一个 C 预处理器文件罢了(

它允许你这样写代码(跑

如果 is_good 那么就
打印("好事");
结束

+ kasm

Kool Assembler,简称 kasm

是一个多目标的汇编器,基于 kascm (为 Kasm 开发的脚本语言)开发

当然我一个人很难写完所有平台、子平台,甚至单单 x86 指令集的指令生成器(几百个,虽然常用的少)(欢迎汇编大佬指正)

(当然会写专门的辅助库/框架帮助汇编器编写的

<<引用结束

最值得 duangsuse 注意的是 duangsuse 打算写的一个汇编器,叫 kasm “Kool Assembler”

汇编器使用 kasmpp 作为预处理器,它支持宏,输入 .kasm 文件,输出 .kas 文件
kas2kass 则是 Scheme 表达式化预处理结果的程序,非常简单就是替换某些符号为空格什么的
kascm 是某个解释器,这样设计方便进行机器移植

kascm-$machine 是 kascm 可以解释的 KScheme 代码,汇编器本身

代码诸如这样

foo.kasm

;; used preprocessor rules ;;
%macro machine (mid)
.machine (mid)
%end

%macro import func (fid)
.extern (fid)
.type function (fid)
%end

%macro section (part)
.section .(part)
%end

%macro export func (fid) as (linkage)
.type function (fid)
.global (fid)
.linkage (fid), global, function, (linkage)
%end

%macro cdecl begin
push bp
mov sp, bp
%end

%macro cdecl end
pop bp
%end

;;;; 写不下.... 🙈

machine x86
import func puts

section text
export func main as _start

impl main:
cdecl fbegin
stack << text
puts ()
cdecl fend

section rodata
data text

text = string "Hello, world!"

引用结束

Kasm 自己现在单独的设计草稿将会下一条发布

+ Fakedyn(ApkBundler Server)

这个名字嘛... 我瞎起的

来源于类似 GitApk 一样的模式,能不动态就不动态,不常动态的就静态自动生成,以此尽可能提升查询速度
而动态的当然也就动态处理,不过完全不使用 SQL 查询,而是自己创建简单的、支持缓存的字符串池服务器“私人定制”化处理,考虑到稳定性可以使用 UNIX 套接字通信,但如果能做在一个进程里就更好了

只有大量数据(比如评论)需要时才使用磁盘和简单的缓存存储(就是对最新的一段消息和最近访问的消息进行固定大小缓存)

如果可能的化,Fakedyn 可以使用 Rust 编写,当然我没必要自己造轮子累死,我可以使用 Rocket.rs

+ Fakedyn 的客户端(ApkBundler 客户端)

计划内有 Kotlin Android 和 ES5 + HTML + CSS 的客户端

+ Stiack Note

下下条发布大概的草稿,将它理解为一个 C/S 架构的生产力工具,类似你们的 Telegram 频道
因为我有时候在自己的频道上做草稿

因为 Drakeet 的 “时光机” 也是类似的功能,不过很可惜后者只能在手机上用,而手机上打字往往不是那么方便

+ Rebase Server

和解吧... “官方” 服务器不好用和第三方服务器不好用是两回事
能够尝试的不如尝试一下,毕竟现成的客户端还没丢失源代码

+ InScript(附带 Android IDE)

第三条将发这次的改动

+ MEdit

就是上次类似纯纯写作那个,堆在这里可能很久以后去实现

打算支持 Markdown 右划预览、代码高亮、快速输入(包含 Markdown snippet)、插件

对于啥书、文章的拆分可能类似纯纯写作,算是打算充当后者的一个不要一分钱的替补

啥字词标点数统计、时光机、稿纸、夜间模式、色彩选择、自动(保存)备份、Markdown 扩展、“打字机模式”(高亮当前行)、、历史记录、完美行间距(明明折行算法、历史记录手段才是攻坚... 行间距根本不算什么)

以及一些文字字体、颜色、大小、行间距、字间距、Tab 长度、行号、参考列线的设置

以及备份恢复

当然我们要是能控制光标位置的,如果实在不行哪怕自己带一个 EditText 再所不惜(跑(反正 TextView 应该只渲染文字吧(拒绝怒斥请求

(当然我不是抄纯纯写作的... 我真的不打算刻意去抄,不过我打算支持之前记忆比较深的特性,而一些特性,如“打字机模式”、历史记录(不跨会话的)、字数统计、快速输入是很多编辑器、字处理器都有的,这不能算作抄袭。

+ ARET

就是说 “Android Reverse Engineering Toolkit”

特性第四条发

+ Functional

我曾经打算开发一个叫 “树”(Tree) 的工具箱,类似一个木函和各种工具箱之类的
是 Beanshell 编写的,可是没有 beanshell 支持单纯文本编辑很难,而且我对 Android GUI 模型没概念

如今打算重启,基于 InScript/ApkBundler Scheme/tChar(NativeAccess)编写、支持插件。

这将会更早开始,这次我真的没有抄啊没有抄... 设计和木函的很像纯属设计撞车

第五条发

+ LLMonkeyVM

就是说 MonkeyVM 基于 LLVM 的版本,打算使用 LLVM# 编写

另外提供一个 filter 程序来将基于 [] 和 emoji 的非标准代码转换为标准代码

+ CRTOY

就是说为了练习对 LL 的熟悉度,使用 Crystal 重写 LLVM Cookbook 上的 TOY 编译器

+ Base64(不是项目名称)

duangsuse 从清华的 Internet 介绍上了解了 Base64 编码方式和 "double quoted" 编码方式

不过为了纪念打算 C 手写编解码器,并且写教程

+ tChar(NativeAccess)

是一个 C 程序,负责 C FFI 接口的处理工作

不是图灵完全的语言,只是用来实现低效率的原生访问而已,支持类似 C 的语法来定义结构体

输出不全是字符串,为了效率有可能出现裸字节

+ WrenJava

Wren JNI 绑定

+ C# BC

GNU BC 的 C# + Kasm JIT(当然,使用 SSA 模式,前端生成处理器无关代码而由 Kasm 负责汇编,寄存器分配使用简单的贪婪法) 版本,但是这个很后很后,至少是 Kasm 稳定后

+ OpenTone

一个音高侦测器,也是很后很后

+ BiliBili Ladspa
生成放电声音的 LADSPA 插件,虽然好像有类似的

如果我学得会必须的数学模型和物理模型的话,就写这个

+ CovJIT

CovScript 的 JIT 版本

打算使用 GNU C99 扩展 + GNU Lightning 编写

+ 别的,只是记录

AMT SMT by example (TeX 项目)翻译
FlappyBird 包括抛物线教程
拼音教程
简单的中文语义列举
2D 物理模拟
这里是 Stiack Notes 的草稿
这里是 InScript 的改动
这里是 ARET 的草稿
这里是 Functional 的草稿
duangsues.is_a? SaltedFish pinned «+ 首先让我解释对 Fushion App 的看法... 也是一个寒歌的作品,我觉得挺好的,虽然之前我明显不是这么想,但现在我明显是这个态度( + Gekyll 如题,是一个老项目的翻盘作吧,上周有新动态,可惜依然不完成 这次已经基本想好了,准备彻底整装待发,明天早上写 HTML templates lib.rb 里放置生成器具后端(填充、输出到文件)的实现,而 CLI 类则负责其前端(设置后端生成器对象,启动生成过程),启动脚本文件只负责控制权转交 CLI 类 因为我的时间毕竟有限而且事有多所以...…»
duangsues.is_a? SaltedFish
这里是 ARET 的草稿
text zip diff root plugins InScript
GLSL hexedit(c 语言静态字符串搜索修改功能)

dexasm dexdasm(两个工具打算自己写,不用 smali)
apkinfo (类似安装包解析工具)

Axmlser Arscser 序列化工具

Apksig 签名 zipalign

TrID 文件类型分析前端
radare2 前端
chat engine 前端
[adb] AndBug CLI 交互前端
[root] Dalvik 调试器
[xposed] Dalvik Xposed 钩子调试器(如果有开源现成的就不用自己写,集成起来
duangsues.is_a? SaltedFish
这里是 InScript 的改动
goto label

class

try
...
trap Exception as ex
...
else
...
end

funcall
funcall do
funcall 'string'
funcall 'string' do

obj.funcall # 类似上面的

obj.funcall(1, 2, 3)
# 就是说,也要采用类似 Lua 的模式,除非以上特例,要加括号
duangsues.is_a? SaltedFish
这里是 Kasm 的草稿
长话短说:子项目
可以使用 LLVM Sanitizer 帮助除错

kasmconv s -> kasm
kasmpp kasm -> kas
kas2kass kas -> kass
kascm kas -> [object file]

klibs 代码生成框架,上面的都是 C 写的,这个是 KScheme 写的

(前端)

kasm-x86
kasm-x86_64
kasm-armv7a
kasm-arm64v8a


(后事了)

klink 支持 elf、mach-o、pe,类 ld 的链接器
kcs 类 C 语言 K 的编译器

(文件目录)

docs test dist Makefile

LICENSE README.md CONTRIBUTING.md
KasmPP(Kasm PreProcessor)

宏匹配大概可以用 Trie 树(前缀树)写吧

% pp command
; comment

tokenize "chars" ; chars -> additional tokenize chars

define sym value
include file
internal system_file

if expr

defined and or not
> = < != >= <=
+ - * / **
& | ! ~

elif expr
else
end

macro rule
body


undef sym

for expr
while expr

env(VAR) nth(0) len(str) system(echo 1) stridx(emm, $i)

let sym = const expr

warn msg
panic msg

inc sym
dec sym

$sym
Kasm 内部命令表

.file
.section
.import
.export
.type
.align
.size
.ident
.impl
.line
.string
.ascii
.asciz

.label
.goto

(sizeof o) (offset label)

.machine
.linkage
Kascm 实现预期

lexer parser string list hash map refcount chunk closure

(.export main)
(.type function main)
(.impl main)
(push ebp)
(mov ebp esp)
(add eax eax 1)
(mov esi (eaddr - ebp 32))
(pop ebp)
(ret)