2008. 9. 19. 02:08ㆍStudy/Programming
기계어와 일대일 대응이 되는 컴퓨터 프로그래밍의 저급언어.
기계어는 실제로 컴퓨터 CPU가 읽어서 실행할 수 있는 0과1로 이루어진 명령어의 조합이다. 이러한 각 명령어에 대해 사람이 알아보기 쉬운 니모닉 기호(Nimonic Symbol)를 정해 사람이 좀 더 쉽게 컴퓨터의 행동을 제어할 수 있도록 한 것이 어셈블리 언어이다.
어셈블리어를 기계어로 번역하는 것을 “어셈블러”(assembler)이며, 거꾸로 기계어를 어셈블리어로 바꾸는 것은 “디스어셈블러”(disassembler)이다. 고급언어와는 달리 어셈블리어는 간단한 문장에 대해 기계어와 일대일 대응 관계가 있지만, 자주 쓰이는 몇 명령은 둘 이상의 기계어 명령을 묶어 하나의 어셈블리 명령어에 대응시키기도 한다.
컴퓨터 아키텍처마다 사용하는 기계어는 달라지며, 따라서 기계어에 대응되어 만들어지는 어셈블리어도 각각 다르게 된다. 컴퓨터 CPU마다 지원하는 오퍼레이션의 타입과 개수는 제각각이며, 레지스터의 크기과 개수, 저장된 데이터 형의 표현도 각기 다르다. 모든 범용 컴퓨터는 기본적으로 동일한 기능을 수행하지만, 기능을 어떤 과정을 거쳐 수행할 지는 다를 수 있으며, 이런 차이는 어셈블리어에 반영되게 된다.
게다가 단일 명령 집합에 대해 여러 니모닉과 신택스가 대응될 수 있다. 그런 경우에는 제조사가 만든 문서에서 쓰이는 것이 가장 자주 쓰이게 된다.
Assembly Language 소스코드의 예
// compile with: /target:library using System.Runtime.CompilerServices; using System;
[assembly:InternalsVisibleTo("cs_friend_assemblies_2")] // internal by default class Class1 { public void Test() { Console.WriteLine("Class1.Test"); } } // public type with internal member public class Class2 { internal void Test() { Console.WriteLine("Class2.Test"); } } |