Your Web News in One Place

Help Webnuz

Referal links:

Sign up for GreenGeeks web hosting
January 23, 2022 07:43 pm GMT

Software Portability and Optimization

Introduction

Today, I will discuss my first experience working on 6502 Emulator.

The 6502 is an 8-bit processor with a 16-bit address bus. It is, therefore, able to access 64 kilobytes (216 bytes). Since each 16-bit address is comprised of two 8-bit bytes, memory can be viewed as 256 pages of 256 bytes each.

We have two tasks to do:

Calculate how long it takes for the code to execute, assuming a 1 MHz clock speed?

Calculate the execution time of the fastest version of this program that you can create?

Calculate how long it takes for the code to execute, assuming a 1 MHz clock speed?

First of all, below, you can see the code I'm about to work with and count how long it takes to execute it.

    lda #$00    ; set a pointer at $40 to point to $0200    sta $40    lda #$02    sta $41    lda #$07    ; colour number    ldy #$00    ; set index to 0loop:   sta ($40),y ; set pixel at the address (pointer)+Y    iny     ; increment index    bne loop    ; continue until done the page    inc $41     ; increment the page    ldx $41     ; get the current page number    cpx #$06    ; compare with 6    bne loop    ; continue until done all pages

To calculate this code, we will need special docs with the time of each command execution.

I've decided to share my calculation via a photo of excel because it seems more informational.
Image description

Calculate the execution time of the fastest version of this program ?

I tried to optimize code and decided to see how different our professor did the same work in class. Code below.

    LDA #$00    STA $10    LDY #$02    STA $11    LDA #$07    LDY #$00    LOOP:   STA ($10),Y    INY     BNE LOOP    INC $11    LDX #$06    CPX $11    BNE LOOP

I didn't find what I could change to make the first code faster, but I think this code can execute in fewer cycles after I did small calculations.

Conclusion

While working on these experiments, I did solve a minor bug in Assembly Compiler. See the Link to the pull request.

Second Blog Post: Link

Links

git https://github.com/aserputov
twitter https://twitter.com/aserputov\

p.s This post was made for my SPO class Lab 2 assignment


Original Link: https://dev.to/aserputov/software-portability-and-optimization-2cja

Share this article:    Share on Facebook
View Full Article

Dev To

An online community for sharing and discovering great ideas, having debates, and making friends

More About this Source Visit Dev To