2013-12-19 4 views
0

어셈블리 언어를 배우기를 고대하고 있습니다.어셈블리 언어의 유형

웹 튜토리얼을 검색하여 다른 구문 구문을 사용하는 다른 튜토리얼을 발견했습니다.

8086 어셈블러, nasm 및 gcc간에 차이가 있습니까?

어셈블리 언어로 코드를 배우는 더 좋은 방법은 무엇입니까?

감사합니다.

답변

1

기본적으로 AT&T 또는 Intel snytax 인 두 가지 맛이 x86 칩셋에 있습니다. 내가 아는 대부분의 사람들은 이해하기가 훨씬 쉽기 때문에 인텔 구문을 선호하지만 물론 익숙해 져야 할 문제이기도합니다. 내가 6510이나 M68000에서 어셈블리를 배웠을 때 AT & T 문법이 더 가깝다는 것을 알았지 만 그것은 IMO 모드를 오히려 혼란스럽게합니다.

당신은뿐만 아니라

gcc -S -masm=intel test.c 

nasm를 사용하여 기본적으로 & T의 구문을 사용 SourceFile의 GCC 어셈블리를 작성하지만 인텔이를 전환 할 수 있습니다 지시 할 경우 어셈블러이며, GCC는 그들이 있도록 컴파일러 전혀 다른 목적이 있습니다.

학습 어셈블리에는 많은 튜토리얼이 있습니다 (예 : The Art of Assembly). 그러나 실제로 배우고 싶다면, 가장 좋은 방법은 debug을 시작하고 몇 가지 지침을 입력하고 자신이 무엇을하고 있는지, 그리고 어떻게 그들이 작은 루프를 작성하여 리 히스 터와 플래그를 변경하는지 확인하는 것입니다.

이 방법을 사용하면 지침에 집중하고 어셈블러 소스 구문도 사용하지 않아도됩니다.

0

하드웨어가 있어도 좋은 첫 번째 명령 세트가 아니라 x86으로 시작하겠다. ARM, msp430, avr 및 일부 다른 제품이 더 뛰어나고 더 나은 가시성을 얻을 수있는 오픈 소스 시뮬레이터를 보유하고 있습니다. 나는 작은 숫자부터 시작해서 간단히 몇 개의 숫자를 추가하거나, 메모리 위치를 쓰거나, 다시 읽으십시오. 시뮬레이터는 결과를 "보기"위해 시스템 콜을 할 필요가 없도록하며, 마찬가지로 정지와 충돌을 통해 작업을 수행 할 수 있으며, IMO는 모든 것을 포기하게됩니다. 더 많이 알게되면, 하드웨어로 전환하거나 다른 명령어 세트를 시도 할 수 있습니다. (각각 새로운 커널이 이전보다 기하 급수적으로 더 간단 해집니다) x86으로 이어질 때까지 여전히 필요성을 느끼는 경우 ... x86을 사용하면 초기에는 8088/86 시뮬레이터를 찾고 원래의 명령어 세트를 배우고 여전히 필요성을 느끼는 경우 80386 이상으로 건너 뜁니다. 당신은 또한 머리에 형식을 전환 할 수 있어야합니다, Gnu를 사용하여 AT & T 추기경 죄는 (gnu assembler 사람들은 이러한 죄를 규칙적으로 저지를 것입니다, 거의 예상됩니다), 불행히도 우리는 이제이 두 가지 경쟁 형식을가집니다. 연습을 통해 코드 검사시 사용되는 형식을 쉽게 알 수 있어야하지만 정신적으로 앞뒤로 전환하는 것은 여전히 ​​어려울 수 있습니다.

관련 문제