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

技术相干订阅~
另外有 throws 闲杂频道 @dsuset
转载频道 @dsusep
极小可能会有批评zf的消息 如有不适可退出
suse小站(面向运气编程): https://WOJS.org/#/
Download Telegram
不知道啥时候写吼( 计划先写libls和webserver
妈耶Rust写的库还真拖体积的后退,有这一兆可以加个图标(
duangsuse::Echo
mind
话说这样根本没有FFI的优越性(基本和两个不相干的进程一样
gg
甲骨文考虑将 Java EE 送给开源基金会
甲骨文想要结束它在 Java 平台企业版 Java EE 上的主导开发角色,寻找开源基金会接手。甲骨文称,即将发布的 Java EE 8 提供了一个机会重新思考 Java 的开发。虽然目前 Java 的开发是在开源社区的参与下进行的,但甲骨文主导的开发流程被认为并不敏捷,灵活或足够开放。甲骨文认为让开源基金会接手可以采用更敏捷的开发流程,更灵活的许可授权和改变治理流程。甲骨文同时表示,它会继续参与 Java EE 的开发。Red Hat 和 Eclipse 基金会都对此表示欢迎,认为转移到一个供应商中立的开源基金会对平台和社区都有益。Eclipse 基金会表示愿意接手。
duangsuse::Echo
ex.wav
咸鱼了又没有PV成...原因我就不说了,现在我把之前欠生存战争吧的几行代码写了就去玩游戏..玩腻了就去把ls的server写了.,还要搞开发板...🙈
duangsuse::Echo
咸鱼了又没有PV成...原因我就不说了,现在我把之前欠生存战争吧的几行代码写了就去玩游戏..玩腻了就去把ls的server写了.,还要搞开发板...🙈
估计彻底结束放假前ls还能发布第一个版本,如果能再做到#![no_std],使用libc来进行文件IO的话就可以做PV了,不然算了
libstd真的是消受不起啊...1.几M这后退拖的... 如果只用libcore和libc就可以小到几K,一个包就可以打包所有架构的库了.
Forwarded from dnaugsuz
#![feature(lang_items)]
#![no_std]

extern crate libc;
use libc::abs;
use libc::mkdir;
use libc::printf;

#[no_mangle]
pub extern "C" fn c_abs(input: i32) -> i32 {
unsafe { abs(input) }
}
#[no_mangle]
pub extern "C" fn c_mkdir() -> i32 {
unsafe { mkdir(12 as *const i8, 755) }
}
#[no_mangle]
pub extern "C" fn c_print() -> i32 {
unsafe { printf(12 as *const i8) }
}

#[lang = "eh_personality"]
extern "C" fn eh_personality() {}
#[lang = "panic_fmt"]
fn panic_fmt() -> ! {
loop {}
}

/* Cargo.toml
[package]
name = "ex"
version = "0.1.0"
authors = ["duangsuse <fedora-opensuse@outlook.com>"]

[dependencies]
libc = { version = "0.2", default-features = false }

[lib]
name = "ex"
crate-type = ["cdylib"]
*/
玩libc玩炸中...🙈
Forwarded from dnaugsuz
du target/debug/libex.so
12 target/debug/libex.so
🌚体积和C一样小,不过不知道和C有啥区别,虽然是Rust
Forwarded from dnaugsuz
nm target/debug/libex.so
U abs@@GLIBC_2.2.5
0000000000201008 b bss_start
0000000000000600 T c_abs
0000000000000630 T c_mkdir
0000000000201008 b completed.6991
0000000000000660 T c_print
w __cxa_finalize@
@GLIBC_2.2.5
0000000000000520 t deregister_tm_clones
00000000000005b0 t __do_global_dtors_aux
0000000000200df8 t __do_global_dtors_aux_fini_array_entry
0000000000201000 d __dso_handle
0000000000200e00 d _DYNAMIC
0000000000201008 d _edata
0000000000201010 b _end
0000000000000684 t _fini
00000000000005f0 t frame_dummy
0000000000200df0 t __frame_dummy_init_array_entry
0000000000000780 r __FRAME_END

0000000000200fb0 d _GLOBAL_OFFSET_TABLE_
w gmon_start
0000000000000690 r GNU_EH_FRAME_HDR
00000000000004d8 t _init
w _ITM_deregisterTMCloneTable
w _ITM_registerTMCloneTable
U mkdir@
@GLIBC_2.2.5
U printf@
@GLIBC_2.2.5
0000000000000560 t register_tm_clones
0000000000201008 d __TMC_END


🌚拿去Python的ctypes玩会,没有libstd好轻巧(
Forwarded from dnaugsuz
llvm-objdump -d target/release/libex.so
c_abs:
5d0: 89 f8 movl %edi, %eax
5d2: f7 d8 negl %eax
5d4: 0f 4c c7 cmovll %edi, %eax
5d7: c3 retq
5d8: 0f 1f 84 00 00 00 00 00 nopl (%rax,%rax)

c_mkdir:
5e0: bf 0c 00 00 00 movl $12, %edi
5e5: be f3 02 00 00 movl $755, %esi
5ea: e9 e1 fe ff ff jmp -287 <.plt.got>
5ef: 90 nop

c_print:
5f0: bf 0c 00 00 00 movl $12, %edi
5f5: 31 c0 xorl %eax, %eax
5f7: e9 dc fe ff ff jmp -292 <.plt.got+0x8>
Forwarded from dnaugsuz
这时候我发现snowman给出的反编译结果🌚
int64_t printf = 0;

int32_t fun_510(int64_t rdi) {
goto printf;
}
int64_t c_print() {
int32_t eax1;
int64_t rax2;

eax1 = fun_510(12);
*reinterpret_cast<int32_t*\>\(&rax2) = eax1;
*reinterpret_cast<int32_t*\>\(reinterpret_cast<int64_t\>\(&rax2) + 4) = 0;
return rax2;
}
虽然垃圾的不知道到那里去了,但的确比反汇编的好...
Forwarded from dnaugsuz
»> c.c_print()
[1] 29596 segmentation fault (core dumped) python
»> c.c_mkdir()
-1
ls .
Cargo.lock Cargo.toml src target
»> c.c_abs(1)
1
»> c.c_abs(-1)
1
»> c.c_abs()
11
Forwarded from dnaugsuz
»> c=ctypes.CDLL("target/debug/libex.so")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python3.6/ctypes/init.py", line 348, in init
self._handle = _dlopen(self._name, mode)
OSError: target/debug/libex.so: undefined symbol: rust_begin_unwind
»>