어셈블리어(assembly language 또는 asm)는 기계어에 가까운 저레벨 프로그래밍 언어이다보니, 각 프로그래밍 언어는 특정한 하드웨어에 의해서만 사용된다.
사용 목적
예전과 달리 컴파일러와 하드웨어가 충분히 좋아진 상황에서 일반적으로 어셈블리어를 사용할만한 경우는 크게 없다고 봐도 되겠다. 그럼에도 불구하고, 어셈블리어가 필요한 경우는 다음과 같다.
- 하드웨어나 OS에 밀접하게 움직이는 소프트웨어. 예: 부트로더, 드라이버, 인터럽트 핸들러, 바이러스 등
- 저레벨 공격으로부터의 보안이 매우 중요한 부분. 예: 암호 알고리즘 중 타이밍 공격을 주의해야 하는 경우
- 컴파일러가 제공하지 않는 명령을 수행하는 경우
- 소프트웨어에 대한 리버스 엔지니어링
- 자체 수정 코드