DCPU-16은 A, B, C, X, Y, Z, I 및 J이라는 8 개의 일반 레지스터를 포함합니다. 루프 카운터에 대해 I 및 J을 사용하는 것은 약간의 프로그래머 "trope"입니다. DCPU-16에서는 I 및 J 특수 레지스터가 루프에서만 사용되어야합니다. 그렇지 않으면 모두 결국 같은 색으로 끝날까요?
DCPU specification에 따르면 SET 명령어가 실패하는 유일한 시간은 a 값이 리터럴 인 경우입니다. 다음과 같이 작동합니까? SET [PC],0x1000
더 유용한 버전은 그래서 오히려 이상한 무한 루프가 될 것이라고이 PC의 오프셋 설정 될 것이다 : 아마 SET [PC+0x2],0x89C3 ; = SUB PC,0x2
DCPU-16에 FizzBuzz를 구현하려고했습니다. 이 웹 에뮬레이터를 사용합니다 : http://mappum.github.com/DCPU-16/ (저장소 : https://github.com/mappum/DCPU-16). 루프 종료 전에 중지됩니다. 왜? 어떻게 최적화 할 수 있습니까? 나는 asm에 관해서 아무 것도 모르는 고급 언어 프로그래머이다.
나는 DCPU-16에 대한 specification 찾고 있어요 그리고 난 DIV 명령과 함께 오버 플로우 값의 목적을 이해하는 데 문제 : DIV A를 B - 세트 a ~ b는 0을 (a < < 16)/b) & 0xffff로 설정합니다. 누구나 O의 의미를 설명 할 수 있습니까?
재미있게도 DCPU-16 (게임 0x10c의 허구의 CPU)에 대한 어셈블리에서 스트림 암호를 쓰고 있습니다. 프로세서는 16 비트 레지스터 만 가지고 있으며 100 Khz로 실행됩니다. 그러나 지금은 메모리 액세스와 곱셈과 나눗셈과 같은 일이 아주 빨라요 (두 개의 간접 메모리 액세스를 사용하는 경우에만 5 사이클이 소요됩니다). 이러한 종류의 제약 조건
현재 DCPU-16 어셈블러를 사용 중입니다 (http://0x10c.com/doc/dcpu-16.txt 및 http://jazzychad.net/dcpu.html 참조). 어셈블러 명령어가 16 진수/2 진수로 변환되는 방식에 대해 이해할 수없는 한 가지 점이 있습니다. 일례로서 , DCPU-16 2 (또는 16 진수 0x0002 바이너리 0b000010
DCPU-16 용 RC4를 작성하고 있지만 시작하기 전에 몇 가지 질문이 있습니다. RC4 알고리즘 : //KSA
for i from 0 to 255
S[i] := i
endfor
j := 0
for i from 0 to 255
j := (j + S[i] + key[i mod keylength]) mod 256
swap v
나는 flex + bison을 사용하여 간단한 어셈블러를 작성했다. 어셈블리 언어에 전처리 기 (매크로)를 추가하고 싶습니다. flex + bison을 처음 사용하려고 할 때, 어떻게해야할지 모르겠습니다. flex + bison의 별도 인스턴스를 추가하고 전처리 작업을 완전히 별도로 수행하는 것이 적절합니까? 아니면 처리 과정에 따라 다른 구문을 표현할 수
게임 0x10c에서 an assemblinker for the 16-bit DCPU을 구현하고 있습니다. 누군가 나에게 제안한 한 기술은 런타임에 코드를 교환하기 위해 "Turbo Pascal 에서처럼 오버레이"를 사용하고있었습니다. 나는 기본 아이디어 (동일한 메모리에 오버레이 된 심볼을 연결하고 ref 전에 교체)를 얻었지만 그 구현은 무엇인가? 컴파일