64 비트 Linux, 어셈블리 언어, 문제점?


7

저는 현재 어셈블리 언어를 배우는 중입니다. Linux Mint (32 비트)에 Gas을 사용하고 있습니다. 이 책 사용 : Programming from the Ground Up.

내가 사용하는 컴퓨터에는 AMD Turion 64 bit 프로세서가 있지만 RAM은 2GB로 제한됩니다. Linux 설치를 64 비트 버전의 Linux Mint로 업그레이드하려고 생각하지만이 책은 32 비트 x86 아키텍처를 대상으로하므로 코드 예제가 작동하지 않을 것으로 우려됩니다.

그래서 두 가지 질문 :

  1. 코드 샘플에 문제가 될 가능성이 있습니까?
  2. 일반적으로 32 비트 이상의 64 비트 Linux를 사용하는 사람에게 이점이 있음을 알았습니까? (스택 오버플로에 대한 일부 스레드가 있지만 Windows Vista와 Windows XP는 대부분 관련이 있습니다.)
4

코드 예제가 모두 작동해야합니다. 64 비트 프로세서 및 운영 체제는 일종의 "호환 모드"로 32 비트 코드를 실행할 수 있습니다. 귀하의 어셈블리 예제도 마찬가지입니다. 추가 어셈블리 라인을 제공해야 할 수도 있습니다 (예 : .BITS 32).하지만 그게 전부입니다.

일반적으로 64 비트 OS를 사용하는 것이 32 비트 OS를 사용하는 것보다 빠릅니다. x86_64에는 i386보다 많은 레지스터가 있습니다. 어셈블리 작업을하기 때문에 어떤 레지스터가 사용되는지 알 수 있습니다 ... 스택이 많아지면 스택 (및 다른 임시 메모리)을 이동해야하므로 프로그램에서 데이터를 관리하는 데 더 적은 시간을 소비합니다. 해당 데이터를 작업하는 데 더 많은 시간이 소요됩니다.

편집 : 당신이 리눅스 64 비트를 실행하더라도 the GAS manual

  0

대단히 감사합니다. 가장 도움이됩니다. 22 feb. 092009-02-22 15:00:30


1

에서 언급 한 바와 같이, 방금 명령 줄 인수를 "--32"를 사용 가스를 사용하여 64 비트 리눅스에 32 비트 코드를 컴파일하려면 32 비트 바이너리를 컴파일하고 실행할 수 있습니다. 민트의 지원이 얼마나 좋은지 모르겠다. 검사를해야한다고 생각한다.

그러나 64 비트 어셈블러는 32 비트와 완전히 호환되지 않습니다. 예를 들어 다른 레지스터가 더 많습니다. 두 플랫폼 중 일부에서는 사용할 수없는 특정 지침이 있습니다.

나는 64 비트로 옮기는 것이 중요하지 않다고 말할 것이다. 당신은 여전히 ​​32 비트 어셈블리을 작성할 수 있으며, 더 많은 프로그래밍/학습 재미의 원천 인 64 비트 (너무 어렵지 않아야 함)로 실행하려고 시도 할 수도 있습니다.

  0

감사합니다. 매우 유용합니다! 22 feb. 092009-02-22 15:01:18

  0

다른 답변이 더 마음에 드는 지 알고 싶지만 내 도움이된다고 생각하면 +1 투표를 할 수 있습니다.)하지만 내 의견에 만족합니다. :) 22 feb. 092009-02-22 18:30:48


1

일반적으로 32 비트가 많으므로 실제로 IT가 필요한 경우 64 비트 이상 만 사용하십시오. 프로그래밍하기 전에 32 비트 응용 프로그램 또는 64 비트 응용 프로그램으로 작업 한 다음 혼합 모드 디버깅으로 사용하기에 앞서 결정하는 것이 좋습니다. 까다로운 작업을 빠르게 수행 할 수 있습니다.