의 특정 메모리 위치에 구조체를 복사 : 나는 메모리에, 예를 들어, 특정 위치에 복사하려면 어떻게나는 <code>struct</code>이있는 경우, 예를 들어, 녹
#[derive(Clone, Copy)]
#[repr(C, packed)]
pub struct SomeData {
a: u16,
b: u64,
c: u32,
d: u16,
}
효율적으로 메모리에 0x1000
지점에? 이 작품이 좋아질까요?
let dst_addr: u64 = 0x1000;
let src = SomeData {a: 1, b: 2, c: 3, d: 4};
unsafe {
let tmp: &[u8; 10] = transmute(src);
copy(dst_addr as *mut _, tmp);
}
는
repr(C, packed)
부분이 실제로 여기에서만 필요하다는 점에 유의하시기 바랍니다.
소프트웨어는 운영 체제 나 기타 제한 사항없이 베어 x86_64, 링 0에서 실행됩니다. 또한 표준 라이브러리없이 을 프로그래밍하므로 core
라이브러리만으로이 작업을 수행 할 수 있습니다.
물론 안전하지 않지만 문제는 아닙니다.
수정 : 초기화되지 않은 메모리로 복사 중입니다.
[* 줄리아 에반스 (Julia Evans)의 작은 단계 *로 녹에 OS 쓰기] (http://jvns.ca/blog/2014/03/12/the- rust-os-story /)와 [필립 오 퍼먼 (Phil Oppermann)의 Rust *에서 OS 작성하기] (http://os.phil-opp.com/)와 두 개 이상의 큰 프로젝트 [Intermezzos] (https : // intermezzos .github.io/book /) 및 [Redox] (https://github.com/redox-os/redox)를 참조하십시오. – Shepmaster
@Shepmaster 그래, 둘 다 읽었 어. 나는 자습서가 항상 올바른 것을 얻는 것이 아니며, 내가 알지 못했던 위대한 "트릭"이 있다면, 이것을하기에 "적절한"방법이 무엇인지 궁금 할뿐입니다. –
이 튜토리얼은 하위 리디렉션이나 사용자 포럼 또는 해커 뉴스에 게시 될 때 커뮤니티에서 철저히 읽어야한다고 생각합니다. 나는 그들이 꽤 잘 검토되기를 기대한다. – Shepmaster