#C :
也可以用 fputc:
这是横向的,当然也可以纵向:
#asm
.db fmt "%c%d\00"
_main:
push rbp
mov rbp, rsp
sub rsp, 4
mov [rbp-4], 0xFF
for:
mov rax, [rbp-4]
push rax
push rax
push fmt
call printf
dec rax
mov [rbp-4], rax
jnz for
for_out:
add rsp, 4
pop rbp
ret
#include <stdio.h>
void main(int argc, char** argv) {
for (int i=0; i<0xFF; i++) printf("%c%d", i, i);
}
也可以用 fputc:
void put(int i) {
fputc(stdout, (char) i);
int acc=i; while (acc!=0) {
fputc(stdout, '0'+acc%0xF);
acc /= 0xF;
}
}
这是横向的,当然也可以纵向:
void putTable(int nmax_col) {
int n=0xFF/nmax_col, m=nmax_col;
char ascii[n][m];
for (int j=0; j<m; j++) for (int i=0, i<n, i++) {
ascii[i][j] = (char)j*m+i;
}
for (int i=0, i<n, i++) for (int j=0; j<m; j++) {
char v=ascii[i][j]; printf("%c%d", v,v);
}
}
#asm
.db fmt "%c%d\00"
_main:
push rbp
mov rbp, rsp
sub rsp, 4
mov [rbp-4], 0xFF
for:
mov rax, [rbp-4]
push rax
push rax
push fmt
call printf
dec rax
mov [rbp-4], rax
jnz for
for_out:
add rsp, 4
pop rbp
ret
#functional #Scala https://github.com/Ray-Eldath/whatever/blob/master/main/src/main/scala/cats/Show.sc 范畴论实践,有 Boolean, Number 等
https://github.com/Ray-Eldath/whatever/blob/master/main/src/main/kotlin/ray/eldath/whatever/dsl/MeetingDSL.kt #Kotlin 新特性回顾,初入 Embed DSL
https://github.com/Ray-Eldath/whatever/blob/master/main/src/main/java/ray/eldath/whatever/LambdaBytecodeExampleJava.java#L26 #Java annotation 语法于数组的小细节 #PLT ,话说作者写好多 bytecode example... 编译看字节码的么
https://github.com/Ray-Eldath/whatever/blob/master/x86/protected_bubble_sort.asm#L52 #asm x86 冒泡排序, :internal 和 :external 是指 while {} 内外,后方可见 inc eax, cmp, jle 指令。
https://github.com/Ray-Eldath/whatever/blob/master/mips/fib.a#L40 #asm MIPS fib(n) 计算,话说
不过说起来也只有会写 C 的人能看汇编😋 GC 和 libc 用惯了会不知道栈空间 jal&j $ax、segment/mmap、interrupt/ivt 是干什么的说。
不过这么看 C 也解决了很严重的 sizeof 整数长度问题啊,这样代码就可移植了,虽然不能像 Java Python 去 Run Anywhere 。
作者在 test/kotlin 下也有写评测
还测了 IntRef+ parallelStream() forEach, reduce 的正确性🤔
当然也有 reflect MethodHandle 的测试代码
他真的对语言 Intrinsic 很了解啊
https://github.com/Ray-Eldath/whatever/blob/master/main/src/main/kotlin/ray/eldath/whatever/dsl/MeetingDSL.kt #Kotlin 新特性回顾,初入 Embed DSL
https://github.com/Ray-Eldath/whatever/blob/master/main/src/main/java/ray/eldath/whatever/LambdaBytecodeExampleJava.java#L26 #Java annotation 语法于数组的小细节 #PLT ,话说作者写好多 bytecode example... 编译看字节码的么
https://github.com/Ray-Eldath/whatever/blob/master/x86/protected_bubble_sort.asm#L52 #asm x86 冒泡排序, :internal 和 :external 是指 while {} 内外,后方可见 inc eax, cmp, jle 指令。
https://github.com/Ray-Eldath/whatever/blob/master/mips/fib.a#L40 #asm MIPS fib(n) 计算,话说
fib(n) = (n>0)? fib(n-1)+fib(n-2) : 0;
这种方法我之前都没用过,一直是 (n<=2)? n : recur(n)
的,思维定势不过说起来也只有会写 C 的人能看汇编😋 GC 和 libc 用惯了会不知道栈空间 jal&j $ax、segment/mmap、interrupt/ivt 是干什么的说。
不过这么看 C 也解决了很严重的 sizeof 整数长度问题啊,这样代码就可移植了,虽然不能像 Java Python 去 Run Anywhere 。
作者在 test/kotlin 下也有写评测
还测了 IntRef+ parallelStream() forEach, reduce 的正确性🤔
当然也有 reflect MethodHandle 的测试代码
他真的对语言 Intrinsic 很了解啊
GitHub
Ray-Eldath/whatever
Scala, Cats, Kotlin, JMH, x86, MIPS, Modern C++, and more... - Ray-Eldath/whatever
duangsuse::Echo
#algorithm 1小时,84 Sorts by Array-Visualize 👀 👏 39:58 tim sort (75%!!! yay) 46:04 introspective sort STD::sort (what) 46:32 optimized bottomup merge sort std::stable_sort (WHAT) 47:19 optimized dualpivot quick sort || #java Arrays.sort (W H A T) 00:00…
#ai RL学习使用 #asm 探索如 3~7项的排序算法
在25w 上加速 1.7% (节省1个MOV)
https://github.com/deepmind/alphadev/blob/main/sort_functions_test.cc
#algorithm https://github.com/Denys88/rl_games
在25w 上加速 1.7% (节省1个MOV)
https://github.com/deepmind/alphadev/blob/main/sort_functions_test.cc
#algorithm https://github.com/Denys88/rl_games
Telegram
Solidot
Google AI 发现更快的排序算法
2023-06-08 13:57:00 by 挽救计划
Google Deepmind 的研究人员在《自然》期刊上发表研究报告,他们使用深度强化学习发现了更快的排序算法。Google Deepmind 的新 AI 系统被称为 AlphaDev,它发现的新算法已经整合到 LLVM 的 C++ 排序库中。Google 研究人员称新算法对较短序列的排序速度提升了最高 70%,对超过 25 万元素的长序列速度提升了 1.7%。研究人员称这是排序库这一部分十年来的首次变化。有开发者认为…
2023-06-08 13:57:00 by 挽救计划
Google Deepmind 的研究人员在《自然》期刊上发表研究报告,他们使用深度强化学习发现了更快的排序算法。Google Deepmind 的新 AI 系统被称为 AlphaDev,它发现的新算法已经整合到 LLVM 的 C++ 排序库中。Google 研究人员称新算法对较短序列的排序速度提升了最高 70%,对超过 25 万元素的长序列速度提升了 1.7%。研究人员称这是排序库这一部分十年来的首次变化。有开发者认为…
duangsuse::Echo
#learn #ts #kt 子类型 vs 组合, in/out参数 https://tttttt.me/dsuses/5194 总之,trait类型的交集 还是需要in/out,这不是子类型带来的麻烦。 a=append(a,x) 与 copy(a,src) 类型上是一样的,前者也并不能“把a修正为更窄接口”。 Go必须把list+=单项 写出来, 因为缺少型变 func main() { var src []interface{} = []any{1, 2, 3, 4, 5} var dst []int =…
#bing #asm 废了,连个VGA黑框框都不会写 https://tttttt.me/dsuses/5206
这题也莫名其妙, 前面的 when(分数) { 40,60,70段,. } 到底是要不要汇编?
我只理解为 bar("A","60%", 6); bar("B","40%", 4) ,结果bing竟然不太会画
其实我倒不喜欢汇编涉及loop , int sign width, stack变量 的部分
那纯属没事找麻烦,难度完全是信息差来的
我是觉得把VGA BIOS的API拿出来用就算了,算式不要手动管寄存器😅。 DOSBOX里应该也支持吧
可惜ai不会 我就懒得写了 ,js的接口生态比这有用不少呢
#statement
以后怕是手撸代码都变成当今汇编的地位。。
时代的眼泪而已 ,汇编大神的梗一直都在 ,它是文化价值> 工程意义
这么说有点实用主义 ,我觉得asm 只配做一种 FFI ,毕竟二进制数据结构都有办法mmap了 。最好是能用py builtins 那样体系化的技术基建实现linux 的设备内存进程等算法 ,这样会有点纪念意义
最重要的是一定要好调试好test,不能让代码的可行性 总是看起来模棱两可 ,敲一堆重复的gdb指令
这题也莫名其妙, 前面的 when(分数) { 40,60,70段,. } 到底是要不要汇编?
我只理解为 bar("A","60%", 6); bar("B","40%", 4) ,结果bing竟然不太会画
其实我倒不喜欢汇编涉及loop , int sign width, stack变量 的部分
那纯属没事找麻烦,难度完全是信息差来的
我是觉得把VGA BIOS的API拿出来用就算了,算式不要手动管寄存器😅。 DOSBOX里应该也支持吧
可惜ai不会 我就懒得写了 ,js的接口生态比这有用不少呢
#statement
以后怕是手撸代码都变成当今汇编的地位。。
时代的眼泪而已 ,汇编大神的梗一直都在 ,它是文化价值> 工程意义
这么说有点实用主义 ,我觉得asm 只配做一种 FFI ,毕竟二进制数据结构都有办法mmap了 。最好是能用py builtins 那样体系化的技术基建实现linux 的设备内存进程等算法 ,这样会有点纪念意义
最重要的是一定要好调试好test,不能让代码的可行性 总是看起来模棱两可 ,敲一堆重复的gdb指令
Telegram
duangsues.is_a? SaltedFish
#bing #asm 不会的东西: 一直在扯32位色深、字体贴图、边距 这些有的没的, 无法认真完成「大作业」
用x86 和 VESA 绘制, 实现 总人数100= .2, .4, .3 构成 的柱状图
在住顶显示"n%" ,底端显示 A,B,C
要求2空格缩进 ,提升函数复用
—
用C内联x86 和 VESA 绘制, 实现 总人数100= .2, .4, .3 构成 的柱状图
汇编结果在 qemu 执行
在柱顶显示"n%" ,底端显示 "A,B,C"
不需要边距,8bit色深, 白色柱体。例如A…
用x86 和 VESA 绘制, 实现 总人数100= .2, .4, .3 构成 的柱状图
在住顶显示"n%" ,底端显示 A,B,C
要求2空格缩进 ,提升函数复用
—
用C内联x86 和 VESA 绘制, 实现 总人数100= .2, .4, .3 构成 的柱状图
汇编结果在 qemu 执行
在柱顶显示"n%" ,底端显示 "A,B,C"
不需要边距,8bit色深, 白色柱体。例如A…
duangsuse::Echo
执行时是怎么样的呢? 🤔(当然这里可能不严谨,不过也够了,反正大家很多人连 CDEF 系统栈是怎么维护的都不知道,也算是科普一下) 我们的 caller 叫做 main,它执行如下代码以调用我们的子程序 bd: sub esp, (2*4) <sp> [....] [....] |***** mov ecx, ; buffer ; ecx = (char *) buffer mov [esp+4], "SGVsbG8K" <sp> [....] [*"SGV....] |***** mov [esp]…
#backend #asm 原来yt上也有这么多人在做CS科普
好怀念以前什么都不了解,没有地方拿到「原始资料」的时候啊..
那时候就是靠猜、靠一些中文资料碎片,也不熟悉「内存布局和跳转」的C语言指针模型,更不会把 struct;union; subtype; weak type;trait; 这些放在一个心智模型里去diff
现在看来是走太多弯路,实现了貌似「科班」轻松就懂的、无意义的东西,但在我看来,用x86 写算法明明就是容易搞懂的事,错误在于最简例、可视化和复用的缺失
说起来,频道的 #tag 太多,成了失去归类能力的野草..😓 对我而言「流行编程语言」就像这样吧;为了摆架子,搞丢了问题的本源
又说了奇怪的话了..😶🌫️ 知乎上也会被PL人喷是民科
幸而最近有点时间编程, 不知道能整出啥
#dalao #blog #inm 野兽的链表里技!
好怀念以前什么都不了解,没有地方拿到「原始资料」的时候啊..
那时候就是靠猜、靠一些中文资料碎片,也不熟悉「内存布局和跳转」的C语言指针模型,更不会把 struct;union; subtype; weak type;trait; 这些放在一个心智模型里去diff
现在看来是走太多弯路,实现了貌似「科班」轻松就懂的、无意义的东西,但在我看来,用x86 写算法明明就是容易搞懂的事,错误在于最简例、可视化和复用的缺失
说起来,频道的 #tag 太多,成了失去归类能力的野草..😓 对我而言「流行编程语言」就像这样吧;为了摆架子,搞丢了问题的本源
又说了奇怪的话了..😶🌫️ 知乎上也会被PL人喷是民科
幸而最近有点时间编程, 不知道能整出啥
#dalao #blog #inm 野兽的链表里技!
YouTube
how does “return” know where to go?
Programming is amazing. Computers allow us to do things that otherwise would be impossible. But sometimes, the code that we write feels like MAGIC. How does all of this stuff work?
Let's talk about how return works.
🛒 GREAT BOOKS FOR THE LOWEST LEVEL🛒…
Let's talk about how return works.
🛒 GREAT BOOKS FOR THE LOWEST LEVEL🛒…
#asm 😅 https://www.youtube.com/watch?v=aD7rOQSrXl8
#learn #PLT #recommend
编程范式,是组合程序的手法,是软件设计的哲学。 Fortran的作者Backus, C的精神领袖Dijkstra 都颠覆过现有的范式
下文不止是种浪漫或讲故事,React 也是对HTML模板范式的改良而爆火
asm:
世界上第一门编程语言,是各种机器语言的文本形式:汇编
没有嵌套结构,以至于许多bot和cli命令使用它的格式接受参数、实现功能
是自由度最高的"系统编程"语言,但机器的自由,反会奴役程序员的想象力
算法范式: asm procedural(imperative) declarative(markups)
数据范式: structured/SP OOP FP
从易解析、VM实现<50行的角度看,汇编是种标记语言。拿txt写需求够用,写业务流当然很累。
下表是这些范式的原神
算法范式: LLVM/WASM C++/Scratch SQL/YAML/PyTorch
数据范式: Rust Java/JSPy TS/React
结构式Rust有比过程式C++更准确更美的类型系统,以此区分。它与Go没有构造器和继承,不算OOP,尽管它混入了精髓(self 参数的链式调用)
从原神到远古。
procedural:
67年前,Fortran 随Backus的新ACM诞生: Can Programming Be Liberated from the "Von Neumann-style"?
F90是一门基于goto行号、支持矩阵malloc和中缀算式、前置类型的语言,这些特性都是x86未提供的。汇编新函数都要手写CDEF样板代码,而那时给游戏机编程的团队也没在乎复用的概念
F90的缩进风格类似SQL,调用风格比Ruby更混乱。PRINT(*) "hi" 是向内置函数提供默认+标准2种参数,自定义函数只能用CALL f,x 模仿。这种内外不平等在PHP,VBA也很常见,Py2to3 就为此修正
structured:
随后3年 ALGOL60.org 诞生。Dijkstra创立的这种结构化编程范式,是 Pascal,Ada 风格的老祖宗
Algol 否定了汇编式的goto,引入了struct定义,划清了四则等运算栈和调用栈。反观最初的F77语言并不能定义具名元组(ADT)
因此用它能学习算法和(同年诞生的Lisp包含的)递归
OOP:
随后2年,Simula67引入了OOP的class等概念: class就是共享构造参数的多函数,函数就是隐藏this等参数的单方法接口,对象和闭包都是代码+数据 是双指针。 闭包序列化可实现RPC和printf!宏
OOP的生硬对不习惯简洁明确DSL的人更友好,因为"method"闭包可以是getsetter、 final/abstract 确定性、 public/private 可见性..
之后以 C++(39年前),Py(32),Rb(29),Java,JS(28),C#(24) 的顺序出现几门主流语言,而 Alan Kay 以启发了Scratch的Smalltalk获图灵奖,成为了OOP届的领军人物
FP:
49年前的Scheme支持了(retAddr的)闭包 以将栈vars转为堆对象(才能作为值),且默认将函数存为(全局/原型链)变量。这比Lua协程早了十年
34年前的Haskell最终让 State,Monad IO, Effect,异步Flow 等术语“组合拳”火遍JS界。 FP界相对零碎,丘奇和图灵可谓两大师
Lisp系的圆括号SEXP直观统一了运算栈和调用栈,一切流控与数学都是函数,这启发了WASM 且等效于VPL拖拽编程/flow编程
综上,老旧的语言未必是落后的
Py,Lisp(WASM,LINQ DSL),Haskell(React) 就对现在的前后端和Excel影响很大
#learn #PLT #recommend
编程范式,是组合程序的手法,是软件设计的哲学。 Fortran的作者Backus, C的精神领袖Dijkstra 都颠覆过现有的范式
下文不止是种浪漫或讲故事,React 也是对HTML模板范式的改良而爆火
asm:
世界上第一门编程语言,是各种机器语言的文本形式:汇编
没有嵌套结构,以至于许多bot和cli命令使用它的格式接受参数、实现功能
是自由度最高的"系统编程"语言,但机器的自由,反会奴役程序员的想象力
算法范式: asm procedural(imperative) declarative(markups)
数据范式: structured/SP OOP FP
从易解析、VM实现<50行的角度看,汇编是种标记语言。拿txt写需求够用,写业务流当然很累。
下表是这些范式的原神
算法范式: LLVM/WASM C++/Scratch SQL/YAML/PyTorch
数据范式: Rust Java/JSPy TS/React
结构式Rust有比过程式C++更准确更美的类型系统,以此区分。它与Go没有构造器和继承,不算OOP,尽管它混入了精髓(self 参数的链式调用)
从原神到远古。
procedural:
67年前,Fortran 随Backus的新ACM诞生: Can Programming Be Liberated from the "Von Neumann-style"?
F90是一门基于goto行号、支持矩阵malloc和中缀算式、前置类型的语言,这些特性都是x86未提供的。汇编新函数都要手写CDEF样板代码,而那时给游戏机编程的团队也没在乎复用的概念
F90的缩进风格类似SQL,调用风格比Ruby更混乱。PRINT(*) "hi" 是向内置函数提供默认+标准2种参数,自定义函数只能用CALL f,x 模仿。这种内外不平等在PHP,VBA也很常见,Py2to3 就为此修正
structured:
随后3年 ALGOL60.org 诞生。Dijkstra创立的这种结构化编程范式,是 Pascal,Ada 风格的老祖宗
Algol 否定了汇编式的goto,引入了struct定义,划清了四则等运算栈和调用栈。反观最初的F77语言并不能定义具名元组(ADT)
因此用它能学习算法和(同年诞生的Lisp包含的)递归
OOP:
随后2年,Simula67引入了OOP的class等概念: class就是共享构造参数的多函数,函数就是隐藏this等参数的单方法接口,对象和闭包都是代码+数据 是双指针。 闭包序列化可实现RPC和printf!宏
OOP的生硬对不习惯简洁明确DSL的人更友好,因为"method"闭包可以是getsetter、 final/abstract 确定性、 public/private 可见性..
之后以 C++(39年前),Py(32),Rb(29),Java,JS(28),C#(24) 的顺序出现几门主流语言,而 Alan Kay 以启发了Scratch的Smalltalk获图灵奖,成为了OOP届的领军人物
FP:
49年前的Scheme支持了(retAddr的)闭包 以将栈vars转为堆对象(才能作为值),且默认将函数存为(全局/原型链)变量。这比Lua协程早了十年
34年前的Haskell最终让 State,Monad IO, Effect,异步Flow 等术语“组合拳”火遍JS界。 FP界相对零碎,丘奇和图灵可谓两大师
Lisp系的圆括号SEXP直观统一了运算栈和调用栈,一切流控与数学都是函数,这启发了WASM 且等效于VPL拖拽编程/flow编程
综上,老旧的语言未必是落后的
Py,Lisp(WASM,LINQ DSL),Haskell(React) 就对现在的前后端和Excel影响很大
YouTube
I made Assembly Cool Again, with ASM++
Welcome to this video where I go over the design and compilation of my abstraction over NASM, construct.
Github: https://github.com/Thomas-de-Bock/construct
Discord: https://discord.gg/zw6MpRkyUa
Github: https://github.com/Thomas-de-Bock/construct
Discord: https://discord.gg/zw6MpRkyUa
#code #asm on x86-64, Diane's silk dress costs $89
>which registers are used for passing arguments in a Linux x86-64 system? make a tool in js, replaceTo arg{0-5}
从中可以看到源码调用printf() 的汇编
x86_64-CDEF/cdecl 科普:
The first six integer or pointer arguments are passed in registers rdi, rsi, rdx, rcx, r8, and r9.
Floating-point arguments are passed in the vector registers xmm0 through xmm7.
其他参数溢出到 rsp-.. 栈上,rsp+用于局部分配(right-to-left order)
<16 bytes 自动传值,也就是可int vec4
Integer and pointer return values are in rax. caller is responsible for cleaning up the stack(rsp-=.. SYSV/win32 STDCALL/包括C++ thiscall 是callee负责,这是唯一的区别)
Floating-point return values are in xmm0.
C语言可以说是汇编的附庸了,在编译后各种类型都会变成+8 +16 的偏移量,struct不能作为值自由地传递或返回,就连数组长度也记不住!
>which registers are used for passing arguments in a Linux x86-64 system? make a tool in js, replaceTo arg{0-5}
ASMR="
subs=(kv,re=RegExp(Object.keys(kv).join('|'),'g'))=>s=>s.replace(re, key => kv[key])
subs(Object.fromEntries(
'rdi rsi rdx rcx r8 r9'.split(' ').map((register, index) => [register, 'arg'+index])
))(fs.readFileSync(0, 'utf-8'))
"
从中可以看到源码调用printf() 的汇编
>find regular file in /usr/bin/* , sort size |xargs file
find `ls -d /usr/bin/* --sort=size` -type f,d|tail -n 1000|xargs file|grep ELF
>radare2 cmd to find string "usage", and show xref in code
r2 <<<'aa;`iz~usage|awk "{print $1}"`;`axtq`' /bin/db_verify
>objdump -d, intel-syntax, no address or bytes, .text only from 0x0000113f
objdump -d -M intel --no-show-raw-insn --no-addresses --start-address=0x0000113f /bin/db_verify|node -p "$ASMR"
x86_64-CDEF/cdecl 科普:
The first six integer or pointer arguments are passed in registers rdi, rsi, rdx, rcx, r8, and r9.
Floating-point arguments are passed in the vector registers xmm0 through xmm7.
其他参数溢出到 rsp-.. 栈上,rsp+用于局部分配(right-to-left order)
<16 bytes 自动传值,也就是可int vec4
Integer and pointer return values are in rax. caller is responsible for cleaning up the stack(rsp-=.. SYSV/win32 STDCALL/包括C++ thiscall 是callee负责,这是唯一的区别)
Floating-point return values are in xmm0.
C语言可以说是汇编的附庸了,在编译后各种类型都会变成+8 +16 的偏移量,struct不能作为值自由地传递或返回,就连数组长度也记不住!
#cs #asm 一个极小的2byte指令和数据RISC(int=i8)
GP寄存器: R0~RE
mov RF, setInterval
smem 0x800, 输出
lmem 0x802, 输入
地址总线u16 通过RD:RE访问
#book Computer Science: An Overview http://v8cpu.qinyue.world/instruction-set.html
https://github.com/chyyuu/v8-cpu/tree/master/examples
https://github.com/vsergeev/v8cpu/blob/master/v8cpu_isa.txt
汇编期计算:
brElse: fn ;if{}else{fn} then..
addI R0,0xFA,R0 ;+=250
jumpL R0,'A' ;if(ch==0x41)
rodata_XX: db "Hello" ;常量池指针
ALU(fn Ra Rb Rw):
addi .+
addf d+
and .&
or .|
xor .^
MCU(fn Ra lit):
jumpl b.lt
jump b.eq
move .= Ra Rw
halt b.thread
rot .>>
ldst内存读写指令,在x86上从来都是mov多写法
loadm lconst "wtf"
loadb lconst_0
loadp larg, aload 0
GP寄存器: R0~RE
mov RF, setInterval
smem 0x800, 输出
lmem 0x802, 输入
地址总线u16 通过RD:RE访问
#book Computer Science: An Overview http://v8cpu.qinyue.world/instruction-set.html
https://github.com/chyyuu/v8-cpu/tree/master/examples
https://github.com/vsergeev/v8cpu/blob/master/v8cpu_isa.txt
汇编期计算:
brElse: fn ;if{}else{fn} then..
addI R0,0xFA,R0 ;+=250
jumpL R0,'A' ;if(ch==0x41)
rodata_XX: db "Hello" ;常量池指针
ALU(fn Ra Rb Rw):
addi .+
addf d+
and .&
or .|
xor .^
MCU(fn Ra lit):
jumpl b.lt
jump b.eq
move .= Ra Rw
halt b.thread
rot .>>
ldst内存读写指令,在x86上从来都是mov多写法
loadm lconst "wtf"
loadb lconst_0
loadp larg, aload 0
GitHub
v8-cpu/examples at master · chyyuu/v8-cpu
Simple 8-bit v8-CPU with Compiler+Assembler+Simulator. Try it--> - chyyuu/v8-cpu
❤1
#dalao https://www.kxxt.dev/blog/programming-thoughts/2022-04-16/
https://lutaonan.com/blog/code-artists/ #ai #dev 第二次提及了,不符合刻板印象的 #js 人 👍
把 AI 当作是你的员工,就像某一天你突然只需要 $20 一个月就能招无数多愿意帮你打工的人,你很快就会发现,你最终会面临两种局面:
局面1:你将手足无措,你突然发现如果你不是实现函数的那个人,你就不知道你应该做什么了。从前你沾沾自喜的手写快排,手写红黑树突然变得一文不值,无处施展。
局面2:你将如虎添翼,你突然发现你曾经有很多想法没有精力和时间去实现,现在突然有这么多廉价劳动力将不厌其烦地帮你写代码
在这里我要申明,这篇文章我是写给有一定经验的程序员看的。对于没有什么经验的程序员,多写点代码总是好的
就像下面这个例子,我只要说一句 add tanstack query provider 就能让 AI 帮我把 @tanstack/query 加到我的程序里,但如果你没有任何代码经验,你连 query 是什么都不知道
#sql
https://github.com/duckdb/pg_duckdb
https://github.com/asg017/sqlite-vec
#asm C语言的变量符号
https://tttttt.me/kaedeharakazuha17/3548?comment=26435
https://evian-zhang.github.io/learn-assembly-on-Apple-Silicon-Mac/1-底层的整数.html
https://nan-archive.vercel.app/debugger
#bash
https://github.com/kxxt/tracexec?tab=readme-ov-file#origin
可是 stra execve 也可以
https://lutaonan.com/blog/code-artists/ #ai #dev 第二次提及了,不符合刻板印象的 #js 人 👍
把 AI 当作是你的员工,就像某一天你突然只需要 $20 一个月就能招无数多愿意帮你打工的人,你很快就会发现,你最终会面临两种局面:
局面1:你将手足无措,你突然发现如果你不是实现函数的那个人,你就不知道你应该做什么了。从前你沾沾自喜的手写快排,手写红黑树突然变得一文不值,无处施展。
局面2:你将如虎添翼,你突然发现你曾经有很多想法没有精力和时间去实现,现在突然有这么多廉价劳动力将不厌其烦地帮你写代码
在这里我要申明,这篇文章我是写给有一定经验的程序员看的。对于没有什么经验的程序员,多写点代码总是好的
就像下面这个例子,我只要说一句 add tanstack query provider 就能让 AI 帮我把 @tanstack/query 加到我的程序里,但如果你没有任何代码经验,你连 query 是什么都不知道
#sql
https://github.com/duckdb/pg_duckdb
https://github.com/asg017/sqlite-vec
#asm C语言的变量符号
https://tttttt.me/kaedeharakazuha17/3548?comment=26435
https://evian-zhang.github.io/learn-assembly-on-Apple-Silicon-Mac/1-底层的整数.html
https://nan-archive.vercel.app/debugger
#bash
https://github.com/kxxt/tracexec?tab=readme-ov-file#origin
可是 stra execve 也可以
alias stra='strace --quiet=attach,exit -f -e "signal=!chld" -e'
www.kxxt.dev
[编程感想] 2022年4月16日
最近在进行开发的时候, 总有一种感觉, 我感觉编程时很多知识是通过尝试来尝试出来的,而不是通过阅读文档得来的。我并不清楚这是我的个人体验还是很多人的共同感受。但是,经过思考,我发现这种方式存在着一些问题: 通过尝试得来的知识有时是不准确的,甚至会造成非常严重的后果,一些…