v5.0을만듬.
추가사항은 입력출력 다양하게 만들고, 기타 성능 향상을 위한 세부 기능이 추가됨.
그리고 코딩 할 수 있는 컴파일러를 만듬.
근데 테스트를 정말 간단한 것만 해봤고 자세히는 안 해봐서 오류 생길 가능성 매우 높음.
예를 들어 A - B로 코딩했는데 결과가 B - A로 나온다던지..
근데 컴파일 에러 뜨는거는 왠만하면 정확할거임.
<문법>
그냥 쓰다 보면 컴파일 에러가 나기 때문에 그거 보면서 하면 됨.
맨 처음에 상수가 못옴. 그래서
3 + [5] (X)
[3] + 3 (O)
[5] + 3 + 2 (O)
공백과 엔터는 무시함.
3 - 숫자 3
[3] - 메모리 3번지에 있는 숫자
[[3]] - 메모리 (메모리 3번지에 있는 숫자) 번지에 있는 숫자
...
= - 대입 연산자
~ - 연산하는 연산자 앞에 붙이면 항 두 개의 위치가 바뀜
3 / 5 는 5 ~/ 3 과 같음
연산하는 연산자 : +, -, *, /, %, ^^(제곱), <<, >>, &, |, ^(XOR), <, ==, >, <=, >=, != 총 17개
순서는 무조건 왼쪽부터 오른쪽으로.
괄호 그런거 못함.
1줄이 명령어 1개로 일대일대응됨.
jump 혹은 jmp 혹은 j : 뒤의 수만큼 앞으로 점프.
jump명령어가 아닌 보통 경우는 바로 다음(+1) 명령어를 실행하는에 여기서 jump N 하면 1 + N 뒤의 명령어를 실행함.
jump -1 하면 자기한테 점프해서 탈출못하는 무한루프걸림.
print 0 혹은 prt 0 혹은 p 0 : 0번 단자로 뒤의 값을 출력 단자는 0~8까지
get 1 [N] 혹은 g 1 [N] : 1번 단자로 들어오는 입력을 읽어서 N번째 메모리에 넣음.. 딱 그 순간의 입력을 읽는거임. 따라서 0이 될 수 있음.
recieve 1 [N] 혹은 rcv 1 [N] 혹은 r 1 [N] : 1번 단자에 입력이 들어올 때까지 대기하다가 입력이 들어오면 그걸 읽어서 N번쨰 메모리에 넣음.
입력은 0이 될 수 없음. 값이 들어올 대까지 계속 대기하는거임.
get과 recieve는 1~16번 단자가 있음.
end 혹은 e : 프로그램 종료
wait X 혹은 w : X틱만큼 대기
alarm X 혹은 arm 혹은 a : X번쨰 알람 냄
sound X 혹은 snd X 혹은 s X : X번째 소리 냄
맨 앞에 i를 넣으면 전에 입력한 커맨드랑 동시에 실행됨.
대신 동시 실행이 안전하게 가능한 명령어만 i 기능이 됨. (점프 상수, 프린트 상수, 알람, 사운드)
<예제코드>
는 유튜브에 있음
대충 되는 명령어들 개별적으로 적자면
[4] = [[[5] + 6] + + + 3]
jump [5] < 9 * -10
alarm 3
wait 10
i alarm 5
[4 + 7] = 3
print 1 [4] + 7
get 9 [5]등등..
<사용방법>
1. 컴파일러를 실행해서 코드를 적음
2. * 를 입력해서 문자열 뽑음
3. 문자열 압축
4. 앞에 0을 붙여서 팩토리오에 적용
5. 알맞은 위치에 설치하고 위의 실행버튼 누름
<cpu 이상해졌을 때 대처법>
맨 위에 일정신호조합기 2개가 있는데 그중에 오른쪽 거에서 쭉 아래쪽으로 내려가면
자기를 되먹임하고 점 신호를 기록하고 초록 선이 엄청 많이 연결된 비교 조합기가 있음.
그거의 되적임 신호를 끊었다가 다시 설치한 뒤
다시 맨 위의 일정신호조합기중 왼쪽인 램 클리너를 껐다키면 램이 초기화됨.
<실행영상>
https://youtu.be/gjg_hkBiRRg<cpu 블프>
https://factorioprints.com/view/-MYA1CJMThSVq3-Ci9TB
<컴파일러>
https://blog.naver.com/mkkim0612/222308881455
이제 컴파일러를 컴파일하자
이 댓글은 게시물 작성자가 삭제하였습니다.
1500줄이라 못할듯ㅋㅋ
해당 댓글은 삭제되었습니다.
토 월 화 태움..
이제 최종 컨텐츠 했으니까 마음 편히 접을 수 있겠다
실제 컴파일러하곤 구조가 완전 다르긴하지만, 그래도 팩토리오 정성 추. 컴파일러보단 인터프리터 내지 복호화기 정도가 적당할듯. 실행 전에 오류검출부터 하진 않는거 같기도 하고 - dc App
그렇구만 확실히 컴파일러보단 인터프리터가 맞는듯
뭔진 몰라도 일단 굴러간다는 거구만?