리눅스 터미널에서 c랑 어셈블리랑 같이 컴파일 해서 실행하려고 하는데
컴파일까진 되는데 실행하면 아무것도 안뜨네요 ㅠㅠㅠㅠ
먼저 c파일
//cal.c
#include <stdio.h>
int add(int, int );
int sub(int, int );
int mul(int, int );
int div(int, int );
int fibo(int );
int fact(int );
int main(void) {
int select = 0;
int value_1 = 0;
int value_2 = 0;
int result = 0;
while(select) {
printf("choose 1.arithmatic 2.fibonacci 3.factorial \n");
scanf("%d", &select);
fflush(stdin);
if(select == 0 || select > 4) {
printf("wrong input \n");
continue;
}
if(select == 1) {
printf("choose 1.add 2.sub 3.mul. 4.div \n");
scanf("%d", &select);
fflush(stdin);
if(select == 0 || select > 4) {
printf("wrong input \n");
continue;
}
printf("input first value \n");
scanf("%d", &value_1);
fflush(stdin);
printf("input second value \n");
scanf("%d", &value_2);
switch(select) {
case 1 :result = add(value_1, value_2);
break;
case 2 :result = sub(value_1, value_2);
break;
case 3 :result = mul(value_1, value_2);
break;
case 4 :result = div(value_1, value_2);
break;
}
if (select == 2) {
printf("input value \n");
scanf("%d", &value_1);
result = fibo(value_1);
}
if (select == 3) {
printf("input value \n");
scanf("%d", &value_1);
result = fact(value_1);
}
printf("result is %d \n", result);
printf("one more time? 0.no the ohter.yes \n");
scanf("%d", &select);
if(select != 0) {
continue;
}
}//while
return 0;
}//main
}
////////////////////////////////
그리고 어셈블리어로 짠 s파일 입니다
//arithmatic.s
.text
.global add
add:
pushl p
movl %esp, p
movl 12(p), x
movl 8(p), x
addl x, x
ret
.global sub
sub:
pushl p
movl %esp, p
movl 12(p), x
movl 8(p), x
subl x ,x
ret
.global mul
mul:
pushl p
movl %esp, p
movl 12(p), x
movl 8(p), x
imull x
ret
.global div
div:
pushl p
movl %esp, p
movl 12(p), x
movl 8(p), x
div x
ret
.global fact
fact:
pushl p
movl %esp, p
movl 8(p), x
movl 8(p), x
decl x
L1: cmpl 8(p), x
je L2
mull x
decl x
jmp L1
L2: ret
.global fibo
fibo:
pushl p
movl %esp, p
movl $0, x
movl $0, x
L3: cmp 8(p), x
je L4
incl x
addl x, x
jmp L3
L4: ret
///////////////////////
이렇게 두 파일 놓고
gcc -o cal cal.c arithmatic.s
이렇게 해서 컴파일 된 cal파일 까지 나왔는데
./cal
로 실행하면 아무것도 안뜨네요
ㅠ
제발 답변좀 부탁드립니다 ㅠㅠㅠ
답변
프로그래밍 시작한지 1년도 안됐지만 답글 달아봅니다
while(select)는 while(0) 이라서 아예 실행 자체가 안되는거 아닌가여??