C로 어셈블러 구현하기
본 자료는 2페이지 의 미리보기를 제공합니다. 이미지를 클릭하여 주세요.
닫기
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
해당 자료는 2페이지 까지만 미리보기를 제공합니다.
2페이지 이후부터 다운로드 후 확인할 수 있습니다.

소개글

C로 어셈블러 구현하기에 대한 보고서 자료입니다.

목차

1. 문제분석
2. 소스파일
3.토의 및 결론
4. 과제 후기

본문내용

그대로 출력 하도록 IF문을 사용하여서
처리하였다.
- 명령어가 메모리 참조 명령어 (MRI)인지 레지스터 참조 명령어(RRI)인지 구분해 주는 부분이 필요하였다. 그래서 아래와같이
#define IS_RRI(Y) ((Y>0x7000)?TRUE:FALSE) opcode 값이 7000이상일때에 RRI로 구분하고 이때에는 화면에 location과
opcode 만을 출력하도록 처리해 주었다.
- 나머지 명령어 즉 MRI 일때 INDIRECT인지 아닌지 구분해 주기 위해서 if (!strcmp(token[2], "I")) instruction
= SET_INDIRECT (instruction) ; 를 추가하여 I가 있을때에는 define 되어있는것을 이용하여 instruction에 0x8000을 더한 결과가
저장되도록 처리 하였다. 처음에 define부분을 못보고 instruction =+ 0x8000 을 하였는데, 나중에 define 부분을 보고 위와 같이
수정하였다.
- Table 6-1을 참고하여 machine instruction 부분을 전부 define해주고 opcode 값을 리턴 시켜주기 위한 get_opcode 부분에 string
을 비교하는 부분을 추가하여 주었다.
- 자료형을 무엇을 써야하는가가 제일 큰 고민 대상이었다. instruction,loc,opcode 이 세가지의 자료형을 short형으로 했을때에는
명령어의 hex code가 F000 이상일때에 에러가 났다. 그래서 자료형을 unsigned short형으로 바꾸어 이 문제를 해결하였다.
- BIN 파일을 생성하는 부분도 어려운 부분중에 하나 였다. 파일을 오픈할때 입력한 파일명을 받기위해 fp2 = fopen(argv[2],"ab");
이와 같이 argv[2]를 사용했으며 처음에 파일오픈 모드를 wb로 하고,샘플코드 컴파일후 생성된 bin 파일의 크기를 보니 2바이트로
변함이 없었다. 그래서 원인을 분석해 본 결과 파일을 열고 닫으면서 파일 포인터가 제일 앞으로 와서 계속 덮어쓰는 결과를 초래
하는것 같았다. 그래서 파일 오픈 모드를 2진파일 추가 모드인 "ab"로 바꿔주어서 이 문제를 해결할수 있었다. ab로 바꾸고 나서
샘플코드를 컴파일 한후 크기를 확인해 보니 48바이트가 됨을 볼수 있었고, 도스창에서 type sample.bin로 확인을 해 보니 이상한
문자들이 화면에 출력됨을 확인할수 있었다.
그리고 BIN 파일에 쓸때는 RRI 부분에서는 fwrite(&opcode,sizeof(unsigned short),1,fp2); MRI일때에는 fwrite(&instruction,
sizeof(unsigned short),1,fp2); 로 하여 각각 opcode와 instruction이 2진수로 파일에 쓰여지게 처리하였다.
4. 과제 후기
- 처음 과제를 받아 보았을때에는 어떻게 어셈블러를 만들수 있을까 하는 걱정이 앞섰지만 교수님께서 주신 코드를 차근차근 분석하고
모르는 부분에 대해 찾아보면서 어떻게 하면 되겠다라는 자신감을 가질수 있었습니다. 그리고 이번 과제를 수행하면서 특히 파일 입
출력 부분에 대한 학습을 다시 할수 있게 되어서 좋았고, 파일 입출력에서 모르는 부분에 대해서도 학습할수 있었던것 같습니다.
이번 프로그래밍 과제를 하면서 저의 프로그래밍 실력에 대하여 다시 한번 뒤돌아
볼수 있는 계기가 되었고, 어셈블러라는것을 직접 제가 구현해 본다는 자체에 정말 큰 의미가 있었던것 같습니다.
이번 과제를 계기로 어려워만 보였던 프로그래밍에 자신감이 생긴것 같아 나름대로 만족하고 있습니다. 두번째로 교수님께서 내주신
과제도 열심히 하여 꼭 구현에 성공하도록 하겠습니다.
  • 가격1,300
  • 페이지수8페이지
  • 등록일2012.12.20
  • 저작시기2012.12
  • 파일형식한글(hwp)
  • 자료번호#827026
본 자료는 최근 2주간 다운받은 회원이 없습니다.
청소해
다운로드 장바구니