[프로그래밍]c로 구현한 어셈블러
- 최초 등록일
- 2006.05.31
- 최종 저작일
- 2000.11
- 20페이지/ MS 파워포인트
- 가격 1,000원
소개글
c로 구현한 어셈블러 입니다.
Ibm 360 시스템의 어셈블러 입니다.
소스 코드를 참고 하시면 공부하시는데 많은 도움이 될겁니다.
해당자료는 발표용 파워포인트 파일로 full code는 포함되어 있지 않습니다. 구매에 착오없으시기 바랍니다.
목차
Assembler is ?
Assembler 설계 절차
전반적인 패스 1 과정 : 심벌의 정의
전반적인 패스 2 과정 : 각 필드의 계산및 코드 생성
어셈블러에 의해 사용되는 데이터 베이스
패스 1과 패스 2를 위한 기계 명령어 테이블(MOT)
패스 1을 위한 의사 명령어 테이블(POT)
패스 1과 패스 2에서 사용되는 심벌테이블
패스 2를 위한 베이스 테이블(BT)
설계 – 테이블 (연결리스트 사용)
PASS 1,2의 출력을 위한 리스트
주요 알고리즘 – 소스코드 읽기
문자열 구분 (토큰이용)
Symbol , literal, 기계어 구분
의사 명령어, 명령어 처리
결과 – 각 테이블
PASS 1
PASS 2
본문내용
struct table_name{
char name[10]; //심벌을 저장
int value; //상대주소 저장
int length; //명령어 길이
char R_A; //재배치 여부
struct table_name *next;
}table_name;
//주소별로 심벌을 저장한다
*next는 다음노드를 가르킨다.
PASS 1,2의 출력을 위한 리스트
Struct pass{
char passMnemonic[10]; //명령어저장
int passValue; //위치
int reg1,offset,indexReg,baseReg;
//R1, 오프셋(index, base)
struct *next; //다음 노드 연결
}
while((ch=fgetsc(*file)) != EOF)
//파일의 끝까지 읽어간다.
{
if (ch != ‘n’) ………
개행문자가 나오면 그만 읽고 한줄을 완성하고 한 줄에서 토큰을 이용하여 문자열을 구분하고
새로운줄을 시작한다.
토큰으로 분리해낸 첫번째 단어에서 분리
If (label [0] == NULL)
// label 은 JOHN START 0 에서 JOHN 이다.
// 조건이 성립하면 기계어 또는 심벌이다.
// 조건이 거짓이면 의사명령어이다.
// 함수내에서 거짓이라면 1 참이면
// 미리 정의된 조건에 따라 특정한 수를 리턴
참고 자료
없음