DCPU specification에 따르면 SET
명령어가 실패하는 유일한 시간은 a
값이 리터럴 인 경우입니다.[PC]에 쓸 수 있습니까?
다음과 같이 작동합니까?
SET [PC],0x1000
더 유용한 버전은 그래서 오히려 이상한 무한 루프가 될 것이라고이 PC
의 오프셋 설정 될 것이다 : 아마
SET [PC+0x2],0x89C3 ; = SUB PC,0x2
DCPU specification에 따르면 SET
명령어가 실패하는 유일한 시간은 a
값이 리터럴 인 경우입니다.[PC]에 쓸 수 있습니까?
다음과 같이 작동합니까?
SET [PC],0x1000
더 유용한 버전은 그래서 오히려 이상한 무한 루프가 될 것이라고이 PC
의 오프셋 설정 될 것이다 : 아마
SET [PC+0x2],0x89C3 ; = SUB PC,0x2
(= 나는 그것이 작동해야하지만 난 노력하지 않았다고 생각) .
이것은 "자체 수정"코드라고하며 제한된 RAM 및 b) 제한된 코드 크기로 인해 8 비트 시대에 널리 사용되었습니다. 이와 같은 코드는 매우 강력하지만 오류가 발생하기 쉽습니다. 코드 기반이 커지면 이는 곧 유지 보수의 악몽이 될 수 있습니다.
유명한 유스 케이스 :
JMP
을 simluate에 복귀 주소를 스택에 쓰기 코드 또는 조작) 공격 벡터로 사용 [PC]에 대한 값이 없습니다, 그래서 당신은 포인터를 (레지스트리 또는 메모리)로 사용할 수있는 PC에 저장하여 둥근 방식으로해야한다고 생각합니다.
SET A , PC SET [A+3], 0x8dc3 ; SUB PC, 3 (if A can't be changed from outside SUB PC,2 works too.)
"DCPU 사양"이란 무엇입니까? 가지고 계신 경우 링크를 제공해주십시오. –
@AaronDigulla, http : ///x10c.com/doc/dcpu-16.txt – Matt
+1 가상의 컴퓨팅을 좋아하는 방법 : –