[System software] (2) Assembler

2023. 11. 1. 02:14CS/System software

Basic assembler functions

Assembler

  • assembly program →machine program+ link/load information
    • link: 여러 목적코드를 하나로
    • load: 목적코드를 메모리에 올릴 때.
  • Assembly languages source program → assembler → object program → linker/loader
  • 2 pass algorithm:
    • pass1: symbol table 만들기
    • pass2: generate machine code
  • 필요한 자료구조:
    • SYMTAB[] : {(symbol, value,flag)} .
    • OPTAB[]: {Mnemonic, code,length)}.
    • LOCCTR[] : Location counter: 현재 읽고 있는 라인의 주소

Assembly program

  • Assembly language: { 단어, 문법}
    • 단어: 기계어(opcode), 상수,변수
    • 문법: {label} operation operand
      • operation:
        • machine instruction: lda, sta,stx,…
        • pseudo: word, resw, byte, resb, start,end
      • operand: address

어셈블러 지시자( Assembler Directives, Pseudo Instructions)

  1. start: 프로그램 이름, 시작주소 명시
  2. end: 프로그램 끝, (선택적으로) 최초로 실행할 명령어 지시
  3. byte: 문자/16진수 상수 생성 → 표현하는데 필요한 만큼의 바이트 사용
  4. word: 1word 정수 상수 생성
  5. resb: 지시된 바이트 만큼 데이터 영역 예약
  6. resw: 지시된 워드 만큼 데이터 영역 예약

2PASS algorithm

  • pass1: 기호 정의
    • 모든 문장에 주소 배정 ← LOCCTR 이용
    • 모든 label에 배정된 주소값들 저장 → SYMTAB[]
    • ( pass2에서 사용하기 위해)
    • 어셈블러 지시자 관련처리 일부 수행
    • → resw, byte 등에 의해 정의되는 데이터 영역 길이 결정
  • pass2: 명령어 번역 & 목적 프로그램 생성
    • 명령어 어셈블
    • [OPCODE + 주소] 조립
    • byte, word로 정의되는 데이터 값 생성
    • pass1에서 처뢰되지 않는 어셈블러 지시자 처리
    • 목적 프로그램, 어셈블리 리스트 출력

Object program format (목적 프로그램 형식)

1. Header: 프로그램 이름, 시작주소, 프로그램 전체 길이

1 : H

2-7 : 프로그램 이름

8-13: 목적 프로그램 시작 주소

14-19: 목적 프로그램 길이 (byte)

 

2. Text: 기계코드, 데이터, 로드 주소

1: T

2-7: 레코드 내 목적코드의 시작주소

8-9: 이 레드코드 길이 (byte)

10-69: 목적 코드

 

3. End: 끝을 명시 프로그램이 시작될 주소 지정

1: E

2-7: 처음 실행될 명령어 주소

'CS > System software' 카테고리의 다른 글

[System software] (5) Operating system  (1) 2023.12.24
[System software] (4) Macro processor  (1) 2023.12.11
[System software] (1) Overview & SIC  (1) 2023.10.19