duangsuse::Echo
583 subscribers
4.12K photos
118 videos
579 files
6.13K links
import this:
美而不丑、明而不暗、短而不凡、长而不乱,扁平不宽,读而后码,行之天下,勿托地上天国。
异常勿吞,难过勿过,叹一真理。效率是很重要,盲目最是低效。
简明是可靠的先验,不是可靠的祭品。
知其变,守其恒,为天下式;穷其变,知不穷,得地上势。知变守恒却穷变知新,我认真理,我不认真。

技术相干订阅~
另外有 throws 闲杂频道 @dsuset
转载频道 @dsusep
极小可能会有批评zf的消息 如有不适可退出
suse小站(面向运气编程): https://WOJS.org/#/
Download Telegram
dnaugsuz
从编译原理的角度这句话没说错,但呃其实我也只是好奇 嵌入式hook也就是了解abi的程度 不会学汇编 从软件看,汇编只是机器暴露的算力/io接口,不是微码等内部细节,对数据处理来说goto和int长度这些没意义,CISC里rep movsb这样的也不如strcpy()可移植(我们定义此复用不需要"学"汇编);如果所有函数是 static inline,再 -O3 -nostdlib ,就等于手写汇编( godbolt.org 无结构编程可以用很多hack,比如跳转到半条指令或把.code .rodat…
https://tttttt.me/im_RORIRI/1560 大概我就是这种专业主义……🌚 #ce 关于这个呢我的观点是

汇编器 #assembler 如 gAS,nasm 是支持指令集(ISA)编码的序列化器,输入含伪指令如 .int 0 .long 1。但是汇编也有些套路(比如 call-pushbp栈帧-ret)
汇编本质上和 Lua虚拟机,PyVM,JVM(但-计算栈),LLVM-IR(但-值节点)是一样的,

只是数据可混入代码且指令长不定,也没有规范的for-loop(decl;cond;tail) 、乃至子程序(函数调用)等结构,
所以我在学汇编时并不是掌握intel等会提供的ISA手册,只是被迫理解既有代码的套路。我认为「抽象概况」的汇编足够了,
你可以了解C的元编程(vararg咋弄,报错unwind,cffi)、C++虚方法实现等,没有必要涉及具体的 jmp jz/je jnz jg/jle, cmp, mov [rbp-8],1 ,add sub ror movzx 指令或者 arm 的 b,bl/call,blx 和thumb指令集模式;编译原理乃至编程不是汇编的附庸——Fortran的设计者 John Backus说的,脱离ISA我们仍能汇编🧐

确实不是所有编程都为使用,但如果想理解汇编,也不该对 x86_64 CDEF调用约定、有无mem2reg 下的汇编全盘接收,实际上编程语言的虚拟机也只是比汇编调用/指令编码更规范、没有统一的objdump ELF format .o/.so地址符号、支持闭包函数据、用常量池而非 .rodata .bss 啥的,而那些加壳器用的花指令(跳转半指令),可在 #reveng 的范畴讨论

如果只是感兴趣,这种思路可以更好的理解汇编,而不是“XX汇编”