mirror of
https://github.com/Ed94/pikuma_ps1.git
synced 2026-06-01 18:41:13 -07:00
52 lines
1.2 KiB
ArmAsm
52 lines
1.2 KiB
ArmAsm
.psx
|
|
.create "./build/exercise_2.bin", 0x80010000
|
|
|
|
; Entry Point of Code
|
|
.org 0x80010000
|
|
|
|
; Constant declaration
|
|
BASE_ADDR equ 0x0000
|
|
|
|
; Symbol Alias Table
|
|
|
|
; Instructions
|
|
; Load
|
|
load_imm equ li ; dst_reg, immeidate value
|
|
; Store
|
|
store_word equ sw ; src_reg, dst_address
|
|
; Addition
|
|
add_s equ add ; dst_reg, reg_a, reg_b (signed)
|
|
add_u equ add ; dst_reg, reg_a, reg_b (unsigned)
|
|
add_si equ addi ; dst_reg, src_reg, immediate value (signed)
|
|
add_ui equ addiu ; dst_reg, src_reg, immediate value (unsigned)
|
|
; Branch
|
|
branch_equal equ beq ; reg, value(reg, immediate), dst_label
|
|
branch_lt_equal equ ble ; reg, value(reg, immediate), dst_label
|
|
|
|
; Registers
|
|
; Temporaries, may be changed by subroutines
|
|
rtemp_0 equ $t0
|
|
rtemp_1 equ $t1
|
|
rtemp_2 equ $t2
|
|
|
|
main:
|
|
; TODO:
|
|
; 1. Start $t0 with the value 1 and $t1 with the value 0
|
|
; 2. Loop, incrementing $t0 until it reaches the value 10
|
|
; 3. Keep adding and accumulating all values of $t0 inside $t1
|
|
|
|
; Attempt:
|
|
load_imm rtemp_0, 1
|
|
; load_imm rtemp_1, 0
|
|
move rtemp_1, $zero
|
|
loop:
|
|
add_s rtemp_1, rtemp_1, rtemp_0
|
|
add_si rtemp_0, rtemp_0, 1
|
|
branch_lt_equal rtemp_0, 10, loop
|
|
nop
|
|
; branch_equal rtemp_0, 10, end
|
|
; nop
|
|
; j loop
|
|
end:
|
|
.close
|