나는 나 자신을 가르치고/어셈블리에 대해 읽었습니다. 어셈블리에 관한 대부분의 책은 x86을 가리 킵니다. 코드의 모든 레지스터 이름은 "r"이 아닌 "e"로 시작합니다 (x86-64 에서처럼). 그러나 64 비트 Linux를 사용하며 x86-64를 언급하지 않기 때문에이 책에 어떤 가치가 있는지 궁금합니다.x86 자료를 사용하여 64 비트 OS에서 어셈블리를 학습 하시겠습니까?
잠깐 말하자면,이 리소스를 사용하여 x86-64를 배우는 것이 정말로 가치있는 일입니다. 또는 레지스터 이름 지정 규칙의 차이 외에도 다른 두 가지 차이점이있어 x86 자료를 학습하기가 어려울 수 있습니까?
호출 규칙이 다르지만 다른 차이점은 실제로 중요하지 않습니다. – harold
호출 규칙 외에도 32 비트 레지스터를 대상 레지스터로 사용하면 해당 64 비트 레지스터의 상위 32 비트가 항상 0으로 설정된다는 점을 기억해야합니다. 다른 문제도 있습니다. 모든 32 비트 명령어 (비교적 일반적인 명령어도 포함)가 유효한 64 비트 명령어는 아닙니다. 내 질문 (폐쇄적 인) http://stackoverflow.com/questions/11897116/how-to-convert-linux-32-bit-gcc를 참조하십시오. -inline-assembly-to-64-bit-code. – nrz