[System software] (2) Assembler
2023. 11. 1. 02:14ㆍCS/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
- operation:
어셈블러 지시자( Assembler Directives, Pseudo Instructions)
- start: 프로그램 이름, 시작주소 명시
- end: 프로그램 끝, (선택적으로) 최초로 실행할 명령어 지시
- byte: 문자/16진수 상수 생성 → 표현하는데 필요한 만큼의 바이트 사용
- word: 1word 정수 상수 생성
- resb: 지시된 바이트 만큼 데이터 영역 예약
- 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 |