목차
1. 개요 및 용어
2. 전제 및 요구사항
3. 프로그램 개요
4. flow chart
5. 사용함수
6. 감상 및 보안사항
7. 첨부
2. 전제 및 요구사항
3. 프로그램 개요
4. flow chart
5. 사용함수
6. 감상 및 보안사항
7. 첨부
본문내용
PG_Rld_Cnt, int Lesa_Cnt, int* PG_Memory){
int i,j,k;
int temp;
char* flag;
//TXT카드의 상대주소값으로 RLD카드를 검색하여 flag에 따라 가감
for(i=0;i
if(i%3==1){
for(j=0;j
if(j%5==4 &&(!(strcmp(PG_Txt[i], PG_Rld[j]) ))){
//flag를 받아옴
flag = PG_Rld[j-1];
//RLD심볼의 ID로 LESA테이블에서 값을 읽어옴
for(k=0;k
if(atoi(PG_Rld[j-3]) == Lesa_Table[k].id)
temp = Lesa_Table[k].value;
}
//해당 txt에 값을 flag에 따라 연산
if(!strcmp(flag,\"+\"))
itoa((atoi(PG_Txt[i+1]) + temp),PG_Txt[i+1],10);
else
itoa((atoi(PG_Txt[i+1]) - temp),PG_Txt[i+1],10);
}
}
}
}
//메모리 맵으로 계산한 값과 절대 주소를 맵핑
for(i=1,j=0;i
PG_Memory[j*2] = atoi(PG_Txt[i]) + Lesa_Table[0].value;//절대주소
PG_Memory[j*2+1] = atoi(PG_Txt[i+1]);//값
}
}
void MemoryPrint(int* Memory){
int i=0;
for(i=0;i<10;i=i+2){
if(Memory[i] !=0 && Memory[i+1] !=0)
printf(\"\\t%d\\t%d\\n\",Memory[i], Memory[i+1]);
}
}
void print_GEST(){
int i;
printf(\"\\t======GEST TABLE======\\n\");
printf(\"\\tSYMBOL\\t\\tVALUE\\n\");
for(i=0;i
printf(\"\\t%s\\t\\t%d\\n\", GEST_TABLE[i].symbol,GEST_TABLE[i].value);
printf(\"\\n\\n\");
}
void print_LESA(struct LESA* LESA_TABLE, int LESA_PTR){
int i;
printf(\"\\tID\\t\\tVALUE\\n\");
for(i=0;i
printf(\"\\t%d\\t\\t%d\\n\", LESA_TABLE[i].id, LESA_TABLE[i].value);
printf(\"\\n\\n\");
}
int main(void){
int PG1_Parse_Cnt[3];
int PG2_Parse_Cnt[3];
int i;
//IPLA주소값 지정
printf(\"PG1의 시작 주소를 입력하세요 : \");
scanf(\"%d\",&IPLA);
printf(\"\\n\\n\\n\\n\");
////////////////////////////Path1///////////////////////////////////////////////
FileToString(\"PG1_ESD_deck.txt\", PG1_ESD);
FileToString(\"PG1_TXT_deck.txt\", PG1_TXT);
FileToString(\"PG1_RLD_deck.txt\", PG1_RLD);
FileToString(\"PG2_ESD_deck.txt\", PG2_ESD);
FileToString(\"PG2_TXT_deck.txt\", PG2_TXT);
FileToString(\"PG2_RLD_deck.txt\", PG2_RLD);
PG1_Parse_Cnt[0] = Token(PG1_ESD,PG1_ESD_WORD);
PG1_Parse_Cnt[1] = Token(PG1_TXT,PG1_TXT_WORD);
PG1_Parse_Cnt[2] = Token(PG1_RLD,PG1_RLD_WORD);
PG2_Parse_Cnt[0] = Token(PG2_ESD,PG2_ESD_WORD);
PG2_Parse_Cnt[1] = Token(PG2_TXT,PG2_TXT_WORD);
PG2_Parse_Cnt[2] = Token(PG2_RLD,PG2_RLD_WORD);
MakeGEST(&IPLA,PG1_ESD_WORD,PG1_Parse_Cnt[0]);
MakeGEST(&IPLA,PG2_ESD_WORD,PG2_Parse_Cnt[0]);
print_GEST();
///////////////////////Path1종료////////////////////////////////////////////////
///////////////////////Path2시작////////////////////////////////////////////////
PG1_LESA_Cnt = MakeLESA(PG1_ESD_WORD,PG1_LESA_TABLE,PG1_Parse_Cnt[0],0);
PG2_LESA_Cnt = MakeLESA(PG2_ESD_WORD,PG2_LESA_TABLE,PG2_Parse_Cnt[0],0);
printf(\"\\t======PG1\'s LESA======\\n\");
print_LESA(PG1_LESA_TABLE, PG1_LESA_Cnt);
printf(\"\\t======PG2\'s LESA======\\n\");
print_LESA(PG2_LESA_TABLE, PG2_LESA_Cnt);
MakeTXT(PG1_TXT_WORD, PG1_RLD_WORD, PG1_LESA_TABLE, PG1_Parse_Cnt[1], PG1_Parse_Cnt[2], PG1_LESA_Cnt, PG1_Memory);
MakeTXT(PG2_TXT_WORD, PG2_RLD_WORD, PG2_LESA_TABLE, PG2_Parse_Cnt[1], PG2_Parse_Cnt[2], PG2_LESA_Cnt, PG2_Memory);
printf(\"\\t===PG1 MemoryMap===\\n\");
MemoryPrint(PG1_Memory);
printf(\"\\n\\n\\n\");
printf(\"\\t===PG2 MemoryMap===\\n\");
MemoryPrint(PG2_Memory);
getch();
}
int i,j,k;
int temp;
char* flag;
//TXT카드의 상대주소값으로 RLD카드를 검색하여 flag에 따라 가감
for(i=0;i
for(j=0;j
//flag를 받아옴
flag = PG_Rld[j-1];
//RLD심볼의 ID로 LESA테이블에서 값을 읽어옴
for(k=0;k
temp = Lesa_Table[k].value;
}
//해당 txt에 값을 flag에 따라 연산
if(!strcmp(flag,\"+\"))
itoa((atoi(PG_Txt[i+1]) + temp),PG_Txt[i+1],10);
else
itoa((atoi(PG_Txt[i+1]) - temp),PG_Txt[i+1],10);
}
}
}
}
//메모리 맵으로 계산한 값과 절대 주소를 맵핑
for(i=1,j=0;i
PG_Memory[j*2+1] = atoi(PG_Txt[i+1]);//값
}
}
void MemoryPrint(int* Memory){
int i=0;
for(i=0;i<10;i=i+2){
if(Memory[i] !=0 && Memory[i+1] !=0)
printf(\"\\t%d\\t%d\\n\",Memory[i], Memory[i+1]);
}
}
void print_GEST(){
int i;
printf(\"\\t======GEST TABLE======\\n\");
printf(\"\\tSYMBOL\\t\\tVALUE\\n\");
for(i=0;i
printf(\"\\n\\n\");
}
void print_LESA(struct LESA* LESA_TABLE, int LESA_PTR){
int i;
printf(\"\\tID\\t\\tVALUE\\n\");
for(i=0;i
printf(\"\\n\\n\");
}
int main(void){
int PG1_Parse_Cnt[3];
int PG2_Parse_Cnt[3];
int i;
//IPLA주소값 지정
printf(\"PG1의 시작 주소를 입력하세요 : \");
scanf(\"%d\",&IPLA);
printf(\"\\n\\n\\n\\n\");
////////////////////////////Path1///////////////////////////////////////////////
FileToString(\"PG1_ESD_deck.txt\", PG1_ESD);
FileToString(\"PG1_TXT_deck.txt\", PG1_TXT);
FileToString(\"PG1_RLD_deck.txt\", PG1_RLD);
FileToString(\"PG2_ESD_deck.txt\", PG2_ESD);
FileToString(\"PG2_TXT_deck.txt\", PG2_TXT);
FileToString(\"PG2_RLD_deck.txt\", PG2_RLD);
PG1_Parse_Cnt[0] = Token(PG1_ESD,PG1_ESD_WORD);
PG1_Parse_Cnt[1] = Token(PG1_TXT,PG1_TXT_WORD);
PG1_Parse_Cnt[2] = Token(PG1_RLD,PG1_RLD_WORD);
PG2_Parse_Cnt[0] = Token(PG2_ESD,PG2_ESD_WORD);
PG2_Parse_Cnt[1] = Token(PG2_TXT,PG2_TXT_WORD);
PG2_Parse_Cnt[2] = Token(PG2_RLD,PG2_RLD_WORD);
MakeGEST(&IPLA,PG1_ESD_WORD,PG1_Parse_Cnt[0]);
MakeGEST(&IPLA,PG2_ESD_WORD,PG2_Parse_Cnt[0]);
print_GEST();
///////////////////////Path1종료////////////////////////////////////////////////
///////////////////////Path2시작////////////////////////////////////////////////
PG1_LESA_Cnt = MakeLESA(PG1_ESD_WORD,PG1_LESA_TABLE,PG1_Parse_Cnt[0],0);
PG2_LESA_Cnt = MakeLESA(PG2_ESD_WORD,PG2_LESA_TABLE,PG2_Parse_Cnt[0],0);
printf(\"\\t======PG1\'s LESA======\\n\");
print_LESA(PG1_LESA_TABLE, PG1_LESA_Cnt);
printf(\"\\t======PG2\'s LESA======\\n\");
print_LESA(PG2_LESA_TABLE, PG2_LESA_Cnt);
MakeTXT(PG1_TXT_WORD, PG1_RLD_WORD, PG1_LESA_TABLE, PG1_Parse_Cnt[1], PG1_Parse_Cnt[2], PG1_LESA_Cnt, PG1_Memory);
MakeTXT(PG2_TXT_WORD, PG2_RLD_WORD, PG2_LESA_TABLE, PG2_Parse_Cnt[1], PG2_Parse_Cnt[2], PG2_LESA_Cnt, PG2_Memory);
printf(\"\\t===PG1 MemoryMap===\\n\");
MemoryPrint(PG1_Memory);
printf(\"\\n\\n\\n\");
printf(\"\\t===PG2 MemoryMap===\\n\");
MemoryPrint(PG2_Memory);
getch();
}
소개글