2010-01-11 9 views
7

오랜 기간 높은 수준의 프로그래밍을 한 후에 x86 명령어 세트의 표면을 만지고 있습니다. 약 20 년 동안 x86 어셈블리 프로그래밍에 대한 첫 번째 기사를 읽었으며 내 googlings에서 무수히 많은 명령어 세트 참조로 인해 길을 잃었습니다. 새 세대의 프로세서 (286, 386, 486 ...)를 새로운 x86 명령어를 추가하는 다른 프로세서에 섞어 놓은 것에서 시작됩니다. AMD 유사 제품은 말할 것도 없습니다.x86 명령어 세트 로드맵

부팅 로더를 만들려고 할 때 처음 생각한 것은 '표준 x86'을 완벽하게 준수하는 것이었지만 어디서나 존재하는지 여부는 알 수 없습니다.

Intel 문서도 같은 경로를 따르고 있으며 다른 문서에서는 'x86 명령어 세트 표준화가 필요합니다. opcode의 발전은 혼란 스럽습니다'라고 말합니다.

표준화 배너를 보유하는 것은 제 생각과 다릅니다. 나는 길을보고 걸을 안전한 곳이 어디인지 알고 싶다. 누구든지 도와 주시면 감사하겠습니다!

답변

5

역사적으로 x86은 이전 버전과 매우 호환되었습니다. x86-64는 BCD 명령어와 같은 아주 오래된 명령을 던져 버렸지 만 이러한 종류의 변경은 다시는 발생하지 않을 것입니다 (최소한 64 비트 주소 공간 전환이 발생하기 전까지는).

거의 모든 x86 프로세서에서 코드가 작동하도록하려면 386 명령어 세트 (코드가 32 비트 인 경우) 또는 초기 x86-64 명령어 세트 (64 비트 인 경우)를 고수하십시오.

+1

요즘에는 686 (Pentium II/III/IV/Pro) 커널을 기본으로 사용할 수 없지만 요즘에는 586 (Pentium) 이상의 다양한 배포판에서 Linux 커널을 빌드하는 경향이 있습니다. 그 (것)들과 k7 (AMD Athlon) 지시의 차이 때문에. – Powerlord

+0

R. Bemrose : 결국 갈 논리적 인 방법입니다. IMO, x86-64의 아름다움은 단지 64 비트가 아니라 프로세서 (예 : SSE)에서 지원하는 지침을위한 합리적인 최소 수립입니다. –

+0

https://fedoraproject.org/wiki/Features/F12X86Support Fedora 12는 i686 용으로 빌드됩니다. , 거기에 많은 오래된 프로세서에 대한 지원을 떨어 뜨린다. 내 불쌍한 C3를 통해 ... :-( – ephemient

1

부트 로더는 16 비트 리얼 모드로 실행됩니다 (피연산자 크기 접두사를 통해 32 비트 레지스터에 액세스 할 수 있음에도 불구하고). 386의 지시 사항을 참고하면 안전 할 것입니다.