ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 어셈블리어
    프로그래밍 언어/규격 2012. 2. 27. 00:04
    기계어(Machine Language)
    컴퓨터의 프로세서(CPU)가 이해하는 언어
    명령어 집합(instruction set)

    IA-32 프로세서(x86)
    AMD64(x86-64, x64)
    c.f. IA-64(Itanium)

    머신 스택


    어셈블리 언어(Assembly Language)
    명령 니모닉 + 오퍼랜드(피연산자?)
    어셈블러

    구조적 프로그래밍이 가능한 고급 언어(High-Level Language)
    컴파일러

    오브젝트 중심의 언어


    인텔 프로세서를 위한 범용 어셈블리 언어 사양은 없다.
    연산자와 디렉티브는 인텔 명령어 집합이 아니다. 그들은 어셈블러에 의하여 인식된다. 하나의 표준 정의가 없기 때문에 어셈블러마다 다른 연산자와 디렉티브를 갖는다. 어셈블러 제조사는 보다 복잡한 특성을 제공하면서 서로서로 경쟁한다.

    Intel 스타일
    MASM

    AT&T 스타일
    GNU as


    TITLE 디렉티브

    주석
    한 줄 주석: ; ..
    블록 주석: COMMENT 디렉티브

    @LINE
    현재 소스 코드의 행 수

    $ 연산자
    현재 위치 카운터 ; 주소

    등호 디렉티브
    정수 수식(32비트 정수 값)
    변수명은 주소 값 ; 유효 주소(effective address)
    c.f. 직접 메모리, 직접 오프셋 or direct addrerssing
    EQU 디렉티브
    TEXTEQU 디렉티브
    c.f. MACRO/ENDM 디렉티브

    INCLUDE 디렉티브


    ALIGN 디렉티브

    LABEL 디렉티브 ; 유니온?

    STRUCT/ENDS 디렉티브

    UNION/ENDS 디렉티브

    PROTO 디렉티브
    INVOKE 디렉티브
    c.f. MACRO/ENDM 디렉티브

    END 디렉티브


    피연산자 타입
    즉시값 ; immediate
    레지스터
    메모리

    메모리 피연산자
    직접 주소 지정 ; 직접 피연산자
    c.f. OFFSET 연산자
    직접 메모리
    e.g. mov al, var1  or  mov al, [var1]
    직접 오프셋 ; direct-offset addressing
    e.g. mov al, [arrayB+1]  or  mov al, arrayB+1
    간접 주소 지정 ; indirect addressing
    c.f. lea 명령 ; 실행 시에 계산
    간접 피연산자 ; indirect operand
    e.g. mov al, [esi]
    인덱스화된 피연산자 ; indexed operand
    e.g. mov al, [arrayB + esi]  or  mov al, arrayB[esi]
    베이스-인덱스 피연산자
    베이스-인덱스 주소 지정
    베이스-인덱스-변위

    OFFSET 연산자 ; 32비트 길이
    주소값?
    어셈블 시간의 오프셋 상수
    e.g. mov esi, OFFSET myArray + 4
    c.f. lea ; 어셈블 시간ㅇ
    PTR 연산자 ; 타입 캐스팅?
    e.g. inc BYTE PTR [esi]
    TYPE 연산자
    변수의 한 요소의 크기를 바이트 단위로 리턴
    LENGTHOF 연산자
    배열의 요소 개수
    SIZEOF 연산자
    LENGTHOF * TYPE

    .386 ; to use the 386 instruction set
    ;.686P ; Pentium Pro or later
    .model flat, stdcall ; the memory model of your program, the parameter passing method used by Windows functions

    .data
        ; All initialized data in your program

    .data?
        ; uninitialized data

    .const
        ; constants

    .code
    start:
        ; All your code
    end start

    SmallWin.inc



Designed by Tistory.