목록컴퓨터구조 (2)
스택큐힙리스트
인텔의 메뉴얼에서 제시된 대로, 메모리에 명령을 작성할 수 있는 것으로 알고 있는데, 명령 미리 읽기 큐는 이미 오래된 명령을 미리 가져와서 해당 이전 명령을 실행하게 될 것입니다. 그러나 나는 이러한 동작을 관찰하는 데 실패했습니다. 나의 방법론은 다음과 같습니다. 인텔 소프트웨어 개발 매뉴얼 11.6 절에 따르면, 현재 프로세서에서 캐시된 코드 세그먼트에 대한 메모리 위치 쓰기는 연관된 캐시 라인(또는 라인들)을 무효화시킵니다. 이 체크는 명령어의 물리적 주소를 기반으로 합니다. 더불어 P6 패밀리와 펜티엄 프로세서는 코드 세그먼트에 대한 쓰기가 실행을 위해 미리 가져온 명령어를 수정할 수 있는지 여부도 체크합니다. 쓰기가 미리 가져온 명령어에 영향을 미치면 프리페치 큐가 무효화됩니다. 이후의 체크는..
저는 예시를 좋아해서 C 언어로 자기 수정 코드를 조금 작성해보았습니다... #@!'#include #include // linuxint main(void) { unsigned char *c = mmap(NULL, 7, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE| MAP_ANONYMOUS, -1, 0); // get executable memory c[0] = 0b11000111; // mov (x86_64), immediate mode, full-sized (32 bits) c[1] = 0b11000000; // to register rax (000) which holds the return value // according to linux x86_64 calling..