시스템 프로그래밍
-
시스템 프로그래밍 프로젝트 SIC 어셈블러 만들기시스템 프로그래밍 2018. 12. 13. 14:31
시스템 프로그래밍 프로젝트 SIC 어셈블러 구현 ▣ 사용자가 작성한 어셈블리 프로그램(원시 프로그램)을 목적 프로그램으로 번역하는 SIC 어셈블러를 구현하기 sample.s assembler.c#include #include #include #define TRUE 1#define FALSE 0struct OPTAB { // 연산코드 테이블 char name[8]; int code;}optab[] = { { "ADD",0x18 },{ "ADDF",0x58 },{ "ADDR",0x90 },{ "AND",0x40 },{ "CLEAR",0xB4 }, { "COMP",0x28 },{ "COMPF",0x88 },{ "COMPR",0xA0 },{ "DIV",0x24 },{ "DIVF",0x64 }, { "DIVR",..
-
시스템 프로그래밍 프로젝트 #5시스템 프로그래밍 2018. 11. 19. 20:09
시스템 프로그래밍 프로젝트 #5 ▣ 아래와 같이 구조체로 예약 단어 및 길이를 정의하고, 이를 검색하여 텍스트 파일의 각 줄에 나타나는 단어들에 대하여 “줄번호-위치-단어-길이”를 출력한다. 단, 예약되지 않은 단어가 나타나면 “Undefined word” 메시지를 출력하고 무시한다(5 단어 이상 정의하고, 텍스트 파일 10줄 이상) input.txt project5.c 실행결과 왼쪽부터 순서대로 줄번호, 위치, 단어, 길이입니다. 먼저 텍스트를 읽고 구조체 배열에 있나 확인합니다. 만약, 있다면 줄번호, 위치, 단어, 길이를 출력하고 위치에 길이를 추가합니다.없다면 Undefined word를 출력하고, 줄번호와 위치를 증가 시키지 않습니다.
-
시스템 프로그래밍 프로젝트 #4시스템 프로그래밍 2018. 11. 5. 19:35
시스템 프로그래밍 프로젝트 #4 ▣ 아래와 같이 한줄에 단어 하나씩 기록된 텍스트 파일 “sample.s”이 있다. 이들 단어를 모두 연결했다고 가정했을 때, 각 다너의 시작 위치를 단어와 함계 출력하고, 마지막에는 총 길이를 출력한다(16진수 사용). sample.s project4.c 실행결과 문자열의 총 길이는 1A가 나왔습니다. 한 줄씩 읽어서 get_lenghth 함수를 실행시킵니다.get_lenghth 함수는 문자열의 길이를 구하여 점점 누적해갑니다.시작위치는 자신 전의 문자열의 길이의 합이기 때문에 읽는 과정에서 먼저 n을 16진수로 출력합니다.다 읽었다면 총 문자열의 길이를 출력합니다.n을 함수 호출 전에 출력한 이유는 함수에서 출력하게 되면, 리턴하면서 n이 사라져 누적이 되지 않기 때문..
-
시스템 프로그래밍 프로젝트 #3시스템 프로그래밍 2018. 10. 31. 16:39
시스템 프로그래밍 프로젝트 #3 ▣ 텍스트 파일 “numb.s”를 open하여, 숫자 단어들에 대한 unsigned 정수를 구한 후 전체 합을 출력한다(단, X’...‘ 형태이면 16진수이고, C’...‘ 형태이면 ASCII 코드들로 이루어진 16진수를 의미함. numb.s project3.c 정수는 그대로 더했고, X의 경우에는 한 문자씩 10진수로 바꾼후, 16진수이기 때문에 지수를 계산해서 곱한 후, 16진수를 10진수로 변경한 후 더했습니다예를 들어 X’BA’는 11 * 16의 1제곱 + 10 * 16의 0제곱 = 186입니다.C의 경우는 한 문자의 아스키코드를 10진수로 바꿔 X의 경우처럼 지수를 계산해서 곱한 후, 16진수를 10진수로 변경한 후 더했습니다.예들 들어 C’F1’ 은 아스키코드에..
-
시스템 프로그래밍 프로젝트 #2시스템 프로그래밍 2018. 10. 31. 16:34
시스템 프로그래밍 프로젝트 #2 ▣ 텍스트 파일 “sample.s”를 open하여 숫자 단어, 알바벳 단어, 기타 단어 등 총 세 종류의 단어 수를 각각 카운트하여 출력 sample.s project2.c atoi는 문자열을 숫자로 바꿔주는 함수입니다. 만약 숫자라면 숫자를 리턴하지만, 문자라면 0을 리턴합니다. 그래서 a가 참이라면 숫자 이기 때문에 숫자 단어개수를 1 증가 시킵니다.아니라면 문자열인데 문자열 중에서도 특수문자가 포함이라면 기타 단어라고 생각했습니다. 문자열의 길이만큼 반복문을 실행시켜 특수문자가 들어갔다면, 기타 단어의 개수를 1 증가 시키고, 아니라면 알바펫 단어의 개수를 1 증가시켰습니다. get_token_num은 각 단어들의 개수를 저장하는 배열 n을 받아와 n의 값을 변경시키..
-
시스템 프로그래밍 프로젝트 #1시스템 프로그래밍 2018. 10. 31. 11:39
시스템 프로그래밍 프로젝트 #1 ▣ 텍스트 파일 “sample.s”를 open하여 단어의 총 수를 카운트하여 출력 sample.s project1.c int get_token_num(char *bp)는 공백으로 단어의 개수를 구분하여 n을 증가시키는 함수입니다. 실행결과 단어의 총 수는 150이 나왔습니다. 컴파일 에러 해결하기 - main 함수의 리턴 타입을 void에서 int로 바꾸고, return 0;을 추가하였습니다.- 함수가 main함수보다 밑에 구현되어 있어서, main 함수 전에 함수의 원형을 선언하였습니다.exit 함수를 사용하기 위해 헤더 파일을 include 시켰습니다.이렇게 처음 컴파일 시 발생한, 3개의 오류를 해결하였습니다.