Data update
This commit is contained in:
parent
4d5544505c
commit
4924dd0264
3073 changed files with 55820 additions and 4408 deletions
8
Task/Include-a-file/RISC-V-Assembly/include-a-file-1.asm
Normal file
8
Task/Include-a-file/RISC-V-Assembly/include-a-file-1.asm
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
/************************************/
|
||||
/* Constantes */
|
||||
/************************************/
|
||||
.equ TRUE, 1
|
||||
.equ FALSE, 0
|
||||
|
||||
.equ LENGTHDEC, 12
|
||||
.equ LENGTHBIN, 33
|
||||
152
Task/Include-a-file/RISC-V-Assembly/include-a-file-2.asm
Normal file
152
Task/Include-a-file/RISC-V-Assembly/include-a-file-2.asm
Normal file
|
|
@ -0,0 +1,152 @@
|
|||
# fichier include riscv assembly for rosetta code
|
||||
# includeFunctions.s
|
||||
|
||||
/************************************/
|
||||
/* string write on connexion usb */
|
||||
/***********************************/
|
||||
/* a0 String address */
|
||||
writeString: # INFO: writeString
|
||||
addi sp, sp, -8 # save registers on stack
|
||||
sw ra, 0(sp)
|
||||
sw s0, 4(sp)
|
||||
mv s0,a0 # move string address
|
||||
1:
|
||||
lbu a0,(s0) # load one character
|
||||
beqz a0,100f # end if zero
|
||||
call putchar # character write
|
||||
add s0,s0,1 # increment address
|
||||
j 1b # and loop
|
||||
|
||||
100: # end function
|
||||
lw ra, 0(sp) # restaur registers
|
||||
lw s0, 4(sp)
|
||||
addi sp, sp, 8
|
||||
ret
|
||||
/************************************/
|
||||
/* binary conversion */
|
||||
/***********************************/
|
||||
/* a0 value */
|
||||
/* a1 result area address */
|
||||
/* size mini 33 character */
|
||||
conversion2: # INFO: conversion2
|
||||
addi sp, sp, -8 # save registres
|
||||
sw ra, 0(sp)
|
||||
li t2,0
|
||||
li t1,0
|
||||
1:
|
||||
slt t3,a0,x0 # if negative bit 31 is 1
|
||||
|
||||
slli a0,a0,1 # shift left one bit
|
||||
add t0,a1,t1 # compute indice to store char in area
|
||||
addi t3,t3,'0' # conversion byte to ascii char
|
||||
sb t3,(t0) # store char in area
|
||||
addi t1,t1,1 # next position
|
||||
li t0,7 # for add a space separation
|
||||
beq t2,t0,4f
|
||||
li t0,15 # for add a space
|
||||
beq t2,t0,4f
|
||||
li t0,23 # for add a space
|
||||
beq t2,t0,4f
|
||||
j 5f
|
||||
|
||||
4: # store space
|
||||
li t3,' '
|
||||
add t0,a1,t1
|
||||
sb t3,(t0)
|
||||
addi t1,t1,1
|
||||
5:
|
||||
addi t2,t2,1 # increment bit indice
|
||||
li t0,32 # maxi ?
|
||||
blt t2,t0,1b # and loop
|
||||
|
||||
add t0,a1,t1
|
||||
sb x0,(t0) # final zero
|
||||
100:
|
||||
lw ra, 0(sp)
|
||||
addi sp, sp, 8
|
||||
ret
|
||||
/**********************************************/
|
||||
/* decimal conversion */
|
||||
/**********************************************/
|
||||
/* a0 value */
|
||||
/* a1 conversion array address */
|
||||
/* a0 return result size */
|
||||
.equ LGZONECONV, 20
|
||||
conversion10:
|
||||
addi sp, sp, -4
|
||||
sw ra, 0(sp)
|
||||
li t1,LGZONECONV
|
||||
li t2,10 # divisor
|
||||
1:
|
||||
rem t4,a0,t2 # division remainder by 10
|
||||
addi t4,t4,48 # convert to decimal
|
||||
add t5,a1,t1 # store character position
|
||||
sb t4,(t5) # store byte
|
||||
div a0,a0,t2 # compute quotient
|
||||
beq a0,x0,2f # compare to 0
|
||||
addi t1,t1,-1 # decrement store position
|
||||
bgt t1,x0,1b # and loop if position is ok
|
||||
2:
|
||||
li t2,0 # raz indice
|
||||
li t3,LGZONECONV
|
||||
3: # loop to transfer result at begining conversion area
|
||||
add t5,a1,t1 # compute start position
|
||||
lb t4,(t5) # load byte
|
||||
add t5,a1,t2 # compute new position
|
||||
sb t4,(t5) # and store byte
|
||||
addi t2,t2,1 # increment indice
|
||||
addi t1,t1,1
|
||||
ble t1,t3,3b # and loop if indice <= area size
|
||||
add t5,a1,t2 # increment final position
|
||||
sb x0,(t5) # and store byte final zero
|
||||
mv a0,t2 # return size conversion
|
||||
|
||||
100:
|
||||
lw ra, 0(sp)
|
||||
addi sp, sp, 4
|
||||
ret
|
||||
/***************************************************/
|
||||
/* register conversion in décimal signed */
|
||||
/***************************************************/
|
||||
/* a0 value */
|
||||
/* a1 result area address size mini 12c */
|
||||
/* a0 return result size */
|
||||
conversion10S: # INFO: conversion10S
|
||||
addi sp, sp, -8 # save registers
|
||||
sw ra, 0(sp)
|
||||
li t6,'+'
|
||||
bge a0,x0,1f # positive number ?
|
||||
li t6,'-' # negative
|
||||
sub a0,x0,a0 # inversion
|
||||
1:
|
||||
li t4,LENGTHDEC # area size
|
||||
li t1,10 # divisor
|
||||
2:
|
||||
remu t3,a0,t1 # remainder division by 10
|
||||
addi t3,t3,48 # conversion ascii
|
||||
add t2,t4,a1 # compute store indice
|
||||
sb t3,(t2)
|
||||
addi t4,t4,-1 # previous position
|
||||
divu a0,a0,t1 # division by 10
|
||||
bne a0,x0,2b
|
||||
# store signe in current position
|
||||
add t2,t4,a1
|
||||
sb t6,(t2)
|
||||
li t2,0
|
||||
li t3,LENGTHDEC
|
||||
3: # loop copy result to area start
|
||||
add t5,a1,t4 # compute start position
|
||||
lb t6,(t5) # load byte
|
||||
add t5,a1,t2 # compute new position
|
||||
sb t6,(t5) # and store byte
|
||||
addi t2,t2,1 # increment indice
|
||||
addi t4,t4,1
|
||||
ble t4,t3,3b # and loop if indice <= area size
|
||||
add t5,a1,t2 # increment final position
|
||||
sb x0,(t5) # and store byte final zero
|
||||
mv a0,t2 # return size conversion
|
||||
|
||||
100:
|
||||
lw ra, 0(sp) # restaur registers
|
||||
addi sp, sp, 8
|
||||
ret
|
||||
44
Task/Include-a-file/RISC-V-Assembly/include-a-file-3.asm
Normal file
44
Task/Include-a-file/RISC-V-Assembly/include-a-file-3.asm
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
# riscv assembly raspberry pico2 rp2350
|
||||
# program include.s
|
||||
# connexion putty com3
|
||||
/*********************************************/
|
||||
/* CONSTANTES */
|
||||
/********************************************/
|
||||
.include "../../constantesRiscv.inc"
|
||||
|
||||
/*******************************************/
|
||||
/* INITIALED DATAS */
|
||||
/*******************************************/
|
||||
.data
|
||||
szMessHello: .asciz "Hello world.\r\n"
|
||||
szMessStart: .asciz "Program riscv start.\r\n"
|
||||
|
||||
/*******************************************/
|
||||
/* UNINITIALED DATA */
|
||||
/*******************************************/
|
||||
.bss
|
||||
.align 2
|
||||
/**********************************************/
|
||||
/* SECTION CODE */
|
||||
/**********************************************/
|
||||
.text
|
||||
.global main
|
||||
|
||||
main:
|
||||
call stdio_init_all # général init
|
||||
1: # start loop connexion
|
||||
li a0,0 # raz argument register
|
||||
call tud_cdc_n_connected
|
||||
beqz a0,1b # retuen code = zero ?
|
||||
|
||||
la a0,szMessStart # message address
|
||||
call writeString # display message
|
||||
la a0,szMessHello # message address
|
||||
call writeString # display message
|
||||
|
||||
100: # final loop
|
||||
j 100b
|
||||
/************************************/
|
||||
/* file include Fonctions */
|
||||
/***********************************/
|
||||
.include "../../includeFunctions.s"
|
||||
Loading…
Add table
Add a link
Reference in a new issue