< 返回版块

yooocen 发表于 2020-01-26 18:28

最近在看Option的源码,一直往里看,发现了这么一个代码段

extern "rust-intrinsic" {
        fn copy_nonoverlapping<T>(src: *const T, dst: *mut T, count: usize);
    }

查了一下rust-intrinsic这个是ABI相关的东西,但是我有一个疑问,如果我还想看它这个copy_nonoverlapping的源代码,我应该如何下手?求教各位大神

评论区

写评论
laizy 2020-01-27 20:07

编译器内置的函数,就像i32是内置的类型一样。这样可以提供很多有用的元信息便于编译器做优化,目前大部分rustc的内置函数调用的是llvm的编译内置函数。比如这个就是调用的llvm.memcpy. 详细可以看:https://www.llvm.org/docs/LangRef.html#standard-c-library-intrinsics

AlephAlpha 2020-01-27 10:06

我完全不懂这个,不过 copy_nonoverlapping 的源代码应该是在这里:https://github.com/rust-lang/rust/blob/8a87b945b27b5670ac5ed665bbb0fccc1b88a0a0/src/librustc_codegen_llvm/intrinsic.rs#L231

1 共 2 条评论, 1 页