6502 실행 시간 계산 - 3부
2066 단어 6502assemblyopensource
이 게시물에서는 이전 게시물의 코드를 최적화하여 실행 시간을 줄이려고 합니다. 이전에 어셈블리 프로그램을 최적화하려고 시도하지 않고 프로그램을 보면 내 직감이
$0400
에 대한 포인터에 액세스하고 1024번 반복하는 데 전념하는 6개의 사이클이 시작하기에 좋은 장소가 될 수 있다고 말합니다.간접 주소를 제거하고 각 페이지를 개별적으로 매우 명시적으로 채우도록 프로그램을 재구성하면 실행 시간이 1,081마이크로초 단축됩니다. 실행 시간을 개선하기 위해 추가로 개선할 수 있는 사항이 있다고 확신하지만 현재로서는 극히 제한된 어셈블리 지식만 가지고 있습니다. 내가 사용한 코드는 다음과 같다.
LDA #$07
LDY #$00
LOOP: STA $0200,Y
INY
BNE LOOP
LDA #$07
LOOP2: STA $0300,Y
INY
BNE LOOP2
LDA #$07
LOOP3: STA $0400,Y
INY
BNE LOOP3
LDA #$07
LOOP4: STA $0500,Y
INY
BNE LOOP4
이번 주 랩의 다른 실험에는 디스플레이를 하늘색으로 채우는 것이 포함됩니다.
이것은 단순히 누산기에 로드된 색상 코드를
$e
에서 $07
로 변경하는 것과 관련되었습니다.또 다른 실험은 각 페이지의 색상을 4개의 개별 섹션으로 변경하는 것이었습니다.
다시 말하지만, 이것은 각 루프에 대해 누산기에 로드된 색상 코드를 변경하는 것과 관련되었습니다.
$e
, $a
, $f
및 $b
.마무리로, 조립에 대한 나의 첫 경험에 대한 몇 가지 생각과 느낌. 확실히 무장 해제 언어입니다. 저는 이제 마지막 학기에 있으며 프로그래밍에 대해 상당한 양을 알고 있는 것처럼 느껴지지만 어셈블리는 실제로 그것을 제거하고 주변의 모든 가정과 선입견 없이 조작되는 기계적인 데이터를 보게 만듭니다. 이 작업을 완료하는 데 있어 가장 어려운 학습 곡선 중 하나는 16진수로 돌아가 오버플로 및 이진수 제한에 대한 세부 정보를 기억하려고 노력하는 것이지만 저를 위한 검토이지만 첫 번째 학기 이후 의미 있는 방식으로 이러한 개념을 다루지 않았습니다. 거의 5년 전의 일이다. 그것들을 다시 이해하면 어셈블리 프로그램이 작동하는 방식의 논리를 따르는 데 많은 도움이 될 것입니다. 그 속으로 더 깊이 빠져들게 되어 흥분된다!
Reference
이 문제에 관하여(6502 실행 시간 계산 - 3부), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/gusmccallum/calculating-6502-execution-time-part-3-4jf1텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)