Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
96
Task/Loops-Break/AArch64-Assembly/loops-break.aarch64
Normal file
96
Task/Loops-Break/AArch64-Assembly/loops-break.aarch64
Normal file
|
|
@ -0,0 +1,96 @@
|
|||
/* ARM assembly AARCH64 Raspberry PI 3B */
|
||||
/* program loopbreak64.s */
|
||||
|
||||
/*******************************************/
|
||||
/* Constantes file */
|
||||
/*******************************************/
|
||||
/* for this file see task include a file in language AArch64 assembly*/
|
||||
.include "../includeConstantesARM64.inc"
|
||||
|
||||
/*********************************/
|
||||
/* Initialized data */
|
||||
/*********************************/
|
||||
.data
|
||||
szMessEndLoop: .asciz "loop break with value : \n"
|
||||
szMessResult: .asciz "Resultat = @ \n" // message result
|
||||
|
||||
.align 4
|
||||
qGraine: .quad 12345678
|
||||
/*********************************/
|
||||
/* UnInitialized data */
|
||||
/*********************************/
|
||||
.bss
|
||||
sZoneConv: .skip 24
|
||||
/*********************************/
|
||||
/* code section */
|
||||
/*********************************/
|
||||
.text
|
||||
.global main
|
||||
main: // entry of program
|
||||
1: // begin loop
|
||||
mov x4,20
|
||||
2:
|
||||
mov x0,19
|
||||
bl genereraleas // generate number
|
||||
cmp x0,10 // compar value
|
||||
beq 3f // break if equal
|
||||
ldr x1,qAdrsZoneConv // display value
|
||||
bl conversion10 // call function with 2 parameter (x0,x1)
|
||||
ldr x0,qAdrszMessResult
|
||||
ldr x1,qAdrsZoneConv
|
||||
bl strInsertAtCharInc // insert result at third @ character
|
||||
bl affichageMess // display message final
|
||||
subs x4,x4,1 // decrement counter
|
||||
bgt 2b // loop if greather
|
||||
b 1b // begin loop one
|
||||
|
||||
3:
|
||||
mov x2,x0 // save value
|
||||
ldr x0,qAdrszMessEndLoop
|
||||
bl affichageMess // display message
|
||||
mov x0,x2
|
||||
ldr x1,qAdrsZoneConv
|
||||
bl conversion10 // call function with 2 parameter (x0,x1)
|
||||
ldr x0,qAdrszMessResult
|
||||
ldr x1,qAdrsZoneConv
|
||||
bl strInsertAtCharInc // insert result at third @ character
|
||||
bl affichageMess // display message
|
||||
|
||||
100: // standard end of the program
|
||||
mov x0,0 // return code
|
||||
mov x8,EXIT // request to exit program
|
||||
svc 0 // perform the system call
|
||||
|
||||
qAdrsZoneConv: .quad sZoneConv
|
||||
qAdrszMessResult: .quad szMessResult
|
||||
qAdrszMessEndLoop: .quad szMessEndLoop
|
||||
|
||||
/***************************************************/
|
||||
/* Generation random number */
|
||||
/***************************************************/
|
||||
/* x0 contains limit */
|
||||
genereraleas:
|
||||
stp x1,lr,[sp,-16]! // save registers
|
||||
stp x2,x3,[sp,-16]! // save registers
|
||||
ldr x3,qAdrqGraine // load graine
|
||||
ldr x2,[x3]
|
||||
lsr x1,x2,17 // see xorshift on wikipedia
|
||||
eor x2,x2,x1
|
||||
lsl x1,x2,31
|
||||
eor x2,x2,x1
|
||||
lsr x1,x2,8
|
||||
eor x1,x2,x1
|
||||
str x1,[x3] // save graine for the next call
|
||||
udiv x1,x2,x0 // divide by value maxi
|
||||
msub x0,x1,x0,x2 // résult = remainder
|
||||
100: // end function
|
||||
ldp x2,x3,[sp],16 // restaur 2 registers
|
||||
ldp x1,lr,[sp],16 // restaur 2 registers
|
||||
ret // return to address lr x30
|
||||
/********************************************************************/
|
||||
qAdrqGraine: .quad qGraine
|
||||
/********************************************************/
|
||||
/* File Include fonctions */
|
||||
/********************************************************/
|
||||
/* for this file see task include a file in language AArch64 assembly */
|
||||
.include "../includeARM64.inc"
|
||||
Loading…
Add table
Add a link
Reference in a new issue