이유는 모르겠지만 어셈블리로 짜고 gcc로 링크한 것이 그냥 C로 짠 것보다 메모리 사용량이 많게 나옵니다.
아래처럼 gcc 대신 그냥 ld를 쓰는 건 어떨까요.
nasm -f elf -o Main.o Main.asm && ld -o Main Main.o
이름은 Assembly (hardcore) 뭐 이정도로 하구요. 다만 이게 동작하려면 지금 막혀있는 것으로 보이는 exit 시스템 콜을 허용해야 합니다.
ld를 안 쓴 이유가 도저히 입출력을 못하겠어서였는데... 어떻게 하면 입출력할 수 있나요?
당연히 C 라이브러리를 쓰는 것보단 훨씬 어렵지만 불가능하진 않다고 봅니다. atoi, itoa를 직접 구현하고 read랑 write 시스템콜 쓰면 되지 않나요?
1000번 소스입니다. 여기서 main을 _start로 바꾸고 main에서 리턴하는 대신 exit 시스템 콜을 쓰면 ld로 링크해서 실행 가능합니다.
https://www.acmicpc.net/coding/view/5452
댓글을 작성하려면 로그인해야 합니다.
choongmin 9년 전
이유는 모르겠지만 어셈블리로 짜고 gcc로 링크한 것이 그냥 C로 짠 것보다 메모리 사용량이 많게 나옵니다.
아래처럼 gcc 대신 그냥 ld를 쓰는 건 어떨까요.
nasm -f elf -o Main.o Main.asm && ld -o Main Main.o
이름은 Assembly (hardcore) 뭐 이정도로 하구요. 다만 이게 동작하려면 지금 막혀있는 것으로 보이는 exit 시스템 콜을 허용해야 합니다.