2014-01-06 4 views
0

어셈블리 언어를 배우기를 원하지만 시작 해야할지 모르겠습니다. 어셈블리는 프로세서의 아키텍처에 의존한다는 것을 압니다. 그래서 그 자리에 하나의 질문이 있습니다. 시스템에 어셈블리 코드를 작성하면 다른 컴퓨터에서 작동하지 않을 가능성이 있습니까? 그렇지 않은 경우 Windows 또는 Linux가 생성되는 방식이므로 거의 모든 컴퓨터에서 작동합니다. 아니면 내가 틀렸어?초보자 어셈블리

+0

소스 또는 실행 파일에 대해 이야기하고 있습니까? – 735Tesla

+0

어셈블리를 배우려는 동기는 무엇입니까?좀 더 높은 수준의 언어를 알고 있으며 어떤 이유로 어셈블리가 필요하다고 생각하십니까? – geoffspear

+0

Linux와 Windows 모두 어셈블리가 아닌 C로 작성되었습니다. –

답변

7

어셈블리 언어는 프로세서의 언어입니다. 다른 프로세서, 다른 언어.

portability을 달성하는 데는 여러 가지 방법이 있습니다. C로 작성한 다음 대상 프로세서에서 C 프로그램을 컴파일하는 것도 한 가지 방법입니다. 가상 머신 사용은 또 다른 것입니다.

일부 이동성은 유사한 명령어 세트를 갖는 동일한 패밀리 프로세서에 의해 달성된다. 따라서 Intel과 AMD 프로세서는 명령어 세트가 서로 호환되도록 설계 되었기 때문에 동일한 휴대용 어셈블리 언어 코드를 실행합니다.

그러나 RISC 프로세서는 명령어 세트가 완전히 다르므로 동일한 어셈블리 언어 프로그램을 실행하지 않습니다.

1

어셈블리는 매우 낮은 수준의 언어이며 거의 직접 기계어 코드 (CPU에서 이해할 수있는 "언어")로 변환됩니다. 오늘날 대부분의 PC는 x86 아키텍처를 기반으로하므로 대부분의 PC에 대한 어셈블리는 매우 유사합니다. 차이점은 운영 체제에 따라 다를 수 있습니다 (예 : 대부분의 Linux 시스템은 Windows보다 라인 끝 부분에 다른 기호를 사용함). 지정된 프로세서의 일부 추가 기능 (모델에 따라 CPU가 일부 다른 작업을 사용할 수 있음)). 물론 다른 아키텍처의 경우 어셈블리가 다릅니다 (예 : ARM 프로세서 용 x86 코드는 완전히 다른 명령 세트를 사용할 수 있으므로 컴파일 할 수 없음).

운영 체제는 일반적으로 일부 고급 언어로 작성되며 일부 기능 (대개 지정된 컴퓨터에서 최대한 빨리 수행해야 함)은 특정 플랫폼에 대한 어셈블리와 같은 일부 저수준 코드로 작성됩니다.

어셈블리로 모험을 시작하려면 8086 어셈블리를 권해드립니다. 이는 어셈블리 코드를 작성하는 방법에 대한 통찰력을 제공 할 수 있으며 미래의 다른 아키텍처에 대한 어셈블리 학습을위한 좋은 기반이 될 수 있습니다.

1

어셈블리 언어는 ISA (Instruction Set Architecture)별로 있습니다. 예로는 x86 (오늘날 대부분의 클라이언트 PC에서 실행되는 서버와 대규모 서버), ARM (대부분 스마트 폰이나 태블릿, 마이크로 서버, 임베디드 시스템 등의 모바일에 사용됨), Alpha, IBM PowerPC, Itanium) 등등.

클라이언트 세그먼트 (당신이 의미하는 것으로 믿는 가정용 데스크탑 또는 노트북)에는 호환 가능성이 높습니다. 이것은 x86 용 Windows를 구입하고 실행할 수있는 방법입니다 (또한 다른 버전 요즘), 또는 리눅스 또는 뭐든, 거의 모든 컴퓨터에서. 이러한 ISAs는 새로운 지침과 새로운 아키텍처 기능 및 운영 모드를 추가하여 끊임없이 진화하고 있습니다. 따라서 일부 ISA의 새 버전 용으로 설계된 프로그램은 훨씬 오래된 HW에서 작동하지 않을 수 있지만 디자이너는 이전 버전과의 호환성을 유지하기 위해 고심하고 있습니다. - 이전 SW는 이전 모드와 지침이 계속 지원되므로 새로운 HW에서 작업 할 수 있습니다. 운영체제도 변화하고 있기 때문에 DOS 용으로 설계된 코드는 새 창에서 "그대로"실행되지 않지만 에뮬레이터 및 기타 트릭의 도움을 받아 실행할 수 있습니다.