본문 바로가기

분류 전체보기

(45)
MAKING ASSEMBLYSYSTEM SOFTWARE 사용자가 작성한 어셈블리 프로그램(원시 프로그램)을 목적 프로그램으로 번역하는 SIC 어셈블러를 구현하기 -xshell -Dev-c ->출력결과를 두개로 출력한 이유 C’EOF’가 operand인 목적코드를 생성할 때 Dev-c에서는 맞게 돌아가나 xshell에서는 이상하게 돌아가서. ->길이 출력 실패 새 문장이 시작될때마다 그 문장의 길이를 출력해 주어야한다. 나의 알고리즘은 순서대로 넣어진 opcode를 추적하여 발견될 때마다 즉시 출력해줌으로써 미리 길이를 구할 수가 없다. 출력해야하는 목적코드를 미리 배열에 저장하여 맨 마지막에 출력해주면 길이와 함께 출력가능. [sample.s] 5 COPY START 1000 10 FIRST STL RETADR 15 CLOOP JSUB RDREC 20 LDA..
System Software _ project 3 # 아래의 텍스트 파일 “numb.s”를 open하여, 숫자 단어들에 대한 unsigned 정수를 구한 후 전체 합을 출력한다(단, X’...’ 형태이면 16진수이고, C’...’ 형태이면 ASCII 코드들로 이루어진 16진수를 의미함). -smple3.c [실행결과] 1.단어를 int get_token_sum()함수로부터 받아오면 우선 문자 맨 앞 cp[0]을 확인하여 어떤 방식으로 변환할 것인지 파악한다. 2. ‘X’이면 16진수를 10진수로 바꿔주고 합을 계산해준다. 3.’C’이면 아스키코드 16진수를 10진수로 바꾸어 해당 숫자를 더해준다. 4. 이 둘다 아니면 그냥 정수이다. cp는 문자열 임으로 숫자로 바꾸어 합을 더해준다. #include #include #include #include in..
System Software _ project 4 #아래와 같이 한줄에 단어 하나씩 기록된 텍스트 파 일 “sample.s”이 있다. 이들 단어를 모두 연결했다 고 가정했을 때, 각 단어의 시작 위치를 단어와 함 께 출력하고, 마지막에는 총 길이를 출력한다(16진 수 사용). 이 프로그램의 가장 중요한 부분은 단어의 시작주소(start)를 출력하기위해 포인터를 사용해야 한다는 점이다. #include /* project #1 : 텍스트 파일내 단어의 총 수를 카운트*/ #include #include int get_token_num(char *bp,int num,int *start); int main() { FILE *fp; char buf[80]; int num=0; int start=0; if ((fp = fopen("sample.s", "r")) ..
System Software _ project 2 # 텍스트 파일 “sample.s”를 open하여 숫자 단어, 알파벳 단어, 기타 단어 등 총 세 종류의 단어 수를 각 카운트하여 출력 [실행결과] -smple2.c 단어를 int get_token_num()함수로부터 받아오면 우선 거기에 특수문자가 있는지 한 문자 씩 검열하여 문자가 속해있는지 판별해 etc를 더해준다. 이게 아니면 또 맨 앞 글자만 비교하여 그 단어가 숫자 혹은 문자로 이루어져 있는지를 판별한다. #include /* project #1 : 텍스트 파일내 단어의 총 수를 카운트*/ #include #include int get_token_num(char *bp,int *alpha,int *etc); int main() { FILE *fp; char buf[80]; int num; in..
System Software _ project 1 # 텍스트 파일 “sample.s”를 open하여 단어의 총 수를 카운트하여 출력 -smple1.c [실행결과] 단어를 int get_token_num()함수로부터 받아오면 우선 거기에 특수문자가 있는지 한 문자 씩 검열하여 문자가 속해있는지 판별해 etc를 더해준다. 이게 아니면 또 맨 앞 글자만 비교하여 그 단어가 숫자 혹은 문자로 이루어져 있는지를 판별한다.