디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

이 오류 어떻게 처리하는 지 좀 알려주세요

질문있슴다(220.149) 2010.12.02 09:11:47
조회 119 추천 0 댓글 4
														
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <math.h>
#include <stdlib.h>

struct reg{
char reg_name[3];
char reg_num[4];
}Reg[20];//레지스터에 대한 이름과 번호를 저장하는 구조체

struct ins{
char instruct[6];
char dest[2];
char sour[2];
char word_type[2];
char ins_code[3];
char ins_len[2];
char mod_reg[9];
}Instr[100];//각 인스트럭션의 정보를 보관하는 구조체
int MaxI;

struct symbol_tbl{
char symbol[10];
char word_type[2];
int lc;
char data[10];
}Symbol[30];//심볼테이블
int MaxS;

struct sentence{
char label[10];
char _operator[10];
char operand[3][10];
}Sen;
int LC;

//화일에서 레지스터와 인스트럭션의 정보를 읽는다
void Initialize()
{
int i=0,j=1;
FILE *regi,*inst;

regi=fopen("reg.tbl","r");
inst=fopen("inst.tbl","r");
while(!feof(regi)){
fscanf(regi,"%s %s\\n",Reg[i].reg_name,Reg[i].reg_num);
i++;
}//레지스터 테이블을 작성한다
while(!feof(inst)){

fscanf(inst,"%6s%2s%2s%4s%3s%2s%9s\\n",
Instr[j].instruct,
Instr[j].dest,
Instr[j].sour,
Instr[j].word_type,
Instr[j].ins_code,
Instr[j].ins_len,
Instr[j].mod_reg);
j++;
}//명령어 테이블을 작성한다
MaxI=j-1;
fclose(regi);
fclose(inst);
}

int Analyze(char *operand)
{
int i=0;
char *regist[]={"AX","BX","CX","DX","AL","BL","CL","DL","AH","BH","CH","DH",0x00};//레지스터의 이름을 저장

if(isdigit(operand[0])) return 0;

else
while(regist[i]!=0x00)
if(!strcmp(operand,regist[i])){
if(i<4)
return 1;
else
return 2;
}
else i++;
return 3;
}
#define MAX_INS 1//명령어의 최대 개수를 지정

int Add_Chk(char *sen)
{
register k=MaxI;
int i=0,j=0,l=0,wp=0;
char op[5][10],*opcode[]={"mov",""};

while(sen[wp]!=\'\\n\'){
while(sen[wp]==\' \'||sen[wp]==\'\\t\'||sen[wp]==\',\')
wp++;
while(sen[wp]!=\' \'&&sen[wp]!=\'\\t\'&&sen[wp]!=\'\\n\'&&sen[wp]!=\',\'){
*(op[j]+i)=sen[wp];
i++;
wp++;
}
*(op[j]+i)=\'\\0\';
i=0;
j++;
}
i=0;
while(strcmp(opcode[i],""))
if(stricmp(opcode[i],op[0]))
i++;
else{
strcpy(Sen._operator,op[0]);
for(l=1;l<j;l++)
strcpy(Sen.operand[l-1],op[l]);
break;
}
if(i==MAX_INS){
strcpy(Sen.label,op[0]);
strcpy(Sen._operator,op[1]);
for(l=2;l<j;l++) strcpy(Sen.operand[l-2],op[l]);
}
strcpy(Instr[0].instruct,op[0]);
switch(Analyze(op[1])){
case 0: strcpy(Instr[0].dest,"i");
break;
case 1: strcpy(Instr[0].dest,"r");
strcpy(Instr[0].word_type,"w");
break;
case 2: strcpy(Instr[0].dest,"r");
strcpy(Instr[0].word_type,"b");
break;
case 3: strcpy(Instr[0].dest,"m");
break;
}
switch(Analyze(op[2])){
case 0: strcpy(Instr[0].sour,"i");
break;
case 1: strcpy(Instr[0].sour,"r");
strcpy(Instr[0].word_type,"w");
break;
case 2: strcpy(Instr[0].sour,"r");
strcpy(Instr[0].word_type,"b");
break;
case 3: strcpy(Instr[0].sour,"m");
break;
}

while(stricmp(Instr[k].instruct,Instr[0].instruct)||strcmp(Instr[k].dest,Instr[0].dest)||strcmp(Instr[k].sour,Instr[0].sour)||strcmp(Instr[k].word_type,Instr[0].word_type))
k--;
return k;
}

void PassI(char *buf)
{
int i;
static int j=0;
i=Add_Chk(buf);
if(i){
printf("%04X: %s",LC,buf);
LC+=atoi(Instr[i].ins_len);
}
else{
if(!stricmp(Sen._operator,"dw"))
strcpy(Symbol[j].word_type,"w");
else if(!stricmp(Sen._operator,"db"))
strcpy(Symbol[j].word_type,"b");
strcpy(Symbol[j].symbol,Sen.label);
strcpy(Symbol[j].data,Sen.operand[0]);
Symbol[j].lc=LC;
printf("%04X: %s",LC,buf);
if(*Symbol[j].word_type == \'w\')
LC+=2;
else if(*Symbol[j].word_type == \'b\')
LC+=1;
j++;
}
}
int btoi(char *dig)
{
register i=0,ret =0;


while(*(dig+i)!=\'\\0\'){
if(*(dig+i)==\'1\')
ret+=pow(2,strlen(dig+i)-1);
i++;
}
return ret;
}
void PassII(char *buf)
{
int i,j=0,k=0;

i=Add_Chk(buf);
if(i){
printf("%04x: %03s",LC,Instr[i].ins_code);
if(!strcmp(Instr[i].dest,"r")){
while(stricmp(Reg[j].reg_name,Sen.operand[0]))
j++;
strncpy(strchr(Instr[i].mod_reg,\'?\'),Reg[j].reg_num,3);
}
j=0;
if(!strcmp(Instr[i].sour,"r")){
while(stricmp(Reg[j].reg_name,Sen.operand[1]))
j++;
strncpy(strchr(Instr[i].mod_reg,\'?\'),Reg[j].reg_num,3);
}
if(strcmp(Instr[i].dest,"m")&&strcmp(Instr[i].sour,"m"))
printf("%02X %s",btoi(Instr[i].mod_reg),buf);
else{
if(!strcmp(Instr[i].dest,"m"))
while(strcmp(Symbol[k].symbol,Sen.operand[0]))
k++;
else if(!strcmp(Instr[i].sour,"m"))
while(strcmp(Symbol[k].symbol,Sen.operand[1]))
k++;
printf("%02X %04X %s",btoi(Instr[i].mod_reg),Symbol[k].lc,buf);
}
LC+=atoi(Instr[i].ins_len);
}
else{
k=0;
while(strcmp(Symbol[k].symbol,Sen.label))
k++;
if(!strcmp(Symbol[k].word_type,"w"))
printf("%04X:%04X %20s",LC,atoi(Symbol[k].data),buf);
if(!strcmp(Symbol[k].word_type,"b"))
printf("%04X:%20X %20s",LC,atoi(Symbol[k].data),buf);
if(*Symbol[k].word_type == \'w\') 
LC+=2;
else if(*Symbol[k].word_type == \'b\')
LC+=1;
}
}

void main()
{
char buf[50];
FILE *in;

in=fopen("test1.asm","r");
Initialize();
printf("\\nPass1:\\n");
while(1){
fgets(buf,30,in);
if(feof(in))
break;
PassI(buf);
}
rewind(in);
LC=0;
printf("\\nPass2:\\n");
while(1){
fgets(buf,30,in);
if(feof(in))
break;
PassII(buf);
}
fclose(in);
}

복사 붙여넣기햇더니 탭되어있던거 다 사라졌네;;

굵은 표시한 부분에

warning C4244: \'+=\' : conversion from \'double \' to \'int \', possible loss of data

에러 나는데 왜 이럴까요

추천 비추천

0

고정닉 0

0

댓글 영역

전체 댓글 0
등록순정렬 기준선택
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 논란보다 더 욕 많이 먹어서 억울할 것 같은 스타는? 운영자 24/09/23 - -
267285 여성 프로그래머라... 상상만 해도 부왘!!! [10] 천재해커(175.196) 11.08.27 311 0
267284 spring framework 라고 들어나 봤냐? ㅄ드라 [8] 징징(219.251) 11.08.27 110 0
267283 배고프다 ㅠㅜ... 뭘 먹어야지 맛있을까? [3] 쿄스케갤로그로 이동합니다. 11.08.27 45 0
267281 구글에서 보내온 메일인데 [5] 야갤러(59.187) 11.08.27 191 0
267280 지금 회사에서도 그녀 처럼 독특한 캐릭 여자애가 하나 있긴 해. [4] 물속의다이아(211.49) 11.08.27 130 0
267277 얘들아... [4] 물속의다이아(211.49) 11.08.27 89 0
267275 후움 열심히 해볼려고 회사 나온건데.. [2] blackd갤로그로 이동합니다. 11.08.27 100 0
267274 프로그래밍 공부하는 사람치고 내 닉넴 모르면 [7] dijkstra(222.233) 11.08.27 142 0
267273 페르마 진짜 간지나지 않냐? [3] blackd갤로그로 이동합니다. 11.08.27 142 0
267270 횽들 박사학위따서 교수하는건 어떰? [14] Ing여(110.13) 11.08.27 247 0
267268 형들 질문! [4] 초보(126.10) 11.08.27 72 0
267267 애시당초 처음접하는 언어로 C#이 어떨까 하는 생각이 들어여 [4] dijkstra(222.233) 11.08.27 122 0
267265 클린턴 전 대통령이 회고록에서 발킨 바에 따르면 [1] 분당살람갤로그로 이동합니다. 11.08.27 49 0
267264 천재해커처럼 해커가 되고 싶은 늅늅이들은 봐라. [7] 천재해커(175.196) 11.08.27 213 0
267263 프로그래밍에 흥미가 있어서 [9] ㅇㅇㅇ(123.111) 11.08.27 117 0
267262 애플이라고 다 잘 만드는게 아니구나... [6] monoless갤로그로 이동합니다. 11.08.27 111 0
267261 스마트폰 최후의 승자는 ARM 아니겠냐 [1] 보|딸|천|황|노|부|나|가갤로그로 이동합니다. 11.08.27 83 0
267258 NASA와 MIT미디어랩이 공동 연구한 바에 따르면 [3] 분당살람갤로그로 이동합니다. 11.08.27 118 0
267257 요즘에도 해커 되고 싶다고 하는 사람들이 있구나 [8] y녀6디리(218.146) 11.08.27 182 0
267256 에잉 난 영화나 보러 가겠어! 외계달팽갤로그로 이동합니다. 11.08.27 26 0
267255 내가 생각하는 하청의 이유 [3] 분당살람갤로그로 이동합니다. 11.08.27 103 0
267254 공돌이 킬러 세종 [3] ㅇㅇ(61.77) 11.08.27 126 0
267252 어제 야근하다 치킨을 시켰는데....... [7] Noir@Blanche갤로그로 이동합니다. 11.08.27 148 0
267250 세종대왕님 정말 쩐다! [12] 외계달팽갤로그로 이동합니다. 11.08.27 250 0
267249 하아 씨발 [8] 김동헌(211.176) 11.08.27 82 0
267248 해커가 되고 싶은사람 봅니다. [4] blackd갤로그로 이동합니다. 11.08.27 180 0
267247 커피숍에나 가야지 [1] monoless갤로그로 이동합니다. 11.08.27 37 0
267246 슈퍼스타K 이 새끼 노래 좆나 짱이다. [3] 영진빠(211.49) 11.08.27 67 0
267245 근데 한국에는 주커버그나 이런 얘들말고 택진횽이 있지않냐. ㅁㄴㅇㅁㅇ(116.121) 11.08.27 75 0
267243 주커버그 되고싶은데 어떻게 해야되요 [6] ㅇㅇ(61.77) 11.08.27 156 0
267239 크롬 아이콘 다시만들어봤어 [8] 둥지짓는드라군갤로그로 이동합니다. 11.08.27 153 0
267238 프갤 효들앗. 웹개발 하는 횽들 ! [6] ㅇㅇ(58.230) 11.08.27 79 0
267237 nhn아카데미 만들면 뭐하냐 어차피 뛰어난애들만 받아주겟지 [1] ㅇㅇ(61.77) 11.08.27 129 0
267236 해커가 되고싶은데 뭐부터 배워야 해요? [8] 염광갤로그로 이동합니다. 11.08.27 137 0
267233 NHN sw아카데미 돋네.. [4] 쿄스케갤로그로 이동합니다. 11.08.27 659 0
267228 그럼 어떻게 공부하냐 [3] 호솽갤로그로 이동합니다. 11.08.27 67 0
267227 UI프로그래밍이 결국 대세가 될것이다. UI하라. [2] 엥간히(219.251) 11.08.27 149 1
267226 센차랑 다음tv팟 연동했다... .3(1.11) 11.08.27 49 0
267225 니들 사람이 왜 뇌능력의 10%밖에 못쓰는지 아냐? [2] 엥간히(219.251) 11.08.27 114 0
267224 프로그래머하겟다고하는애들보면 ㅄ같다 [8] ㅇㅇ(180.230) 11.08.27 289 0
267222 헤드퍼스트 아이폰 공부 중인데 트위터 어플이 안된다 ㅠㅠ 거칠게갤로그로 이동합니다. 11.08.27 90 0
267221 유교가 한국을 망친다 [3] ㅇㅇ(61.77) 11.08.27 94 0
267219 이런 날씨에는 난 이런게 생각이 나지. [2] 좋은아버지갤로그로 이동합니다. 11.08.27 58 0
267218 오늘 날씨가 정말 좋은 거야? [3] 좋은아버지갤로그로 이동합니다. 11.08.27 54 0
267217 윈도우에서 굴림/맑은고딕 조지고 나눔글꼴 쓰는 방법 [2] 땡칠도사갤로그로 이동합니다. 11.08.27 197 0
267216 왠지 프겔러 중에 정부주도 os만드는데 참여할 사람 있을꺼 같다. [1] 거칠게갤로그로 이동합니다. 11.08.27 82 0
267214 왜 맥은 커멘드 + 스페이스로 한영 바꾸는가... [7] 거칠게갤로그로 이동합니다. 11.08.27 119 0
267212 개발할때 한글은 정말 쓸모가 없는거 같다... [1] asshole갤로그로 이동합니다. 11.08.27 79 0
267211 그래도 나는 지금 회사는 좀 그래. [6] 좋은아버지갤로그로 이동합니다. 11.08.27 106 0
267210 그러면 이사님한데 자진 신고할까? [4] 좋은아버지갤로그로 이동합니다. 11.08.27 75 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2