Mun pitäisi tehdä esimerkkiohjelma seuraavan ohjeen mukaan:
Laadi ARM-prosessorille assembly-kielinen ohjelma, joka lukee rekisterin r0 osoittamasta muistiosoitteesta alkaen kaksi 32-bittistä lukua ja järjestää ne se samoihin muistiosoitteisiin suuruusjärjestykseen siten, että ensimmäisessä muistiosoitteessa on suurempi luvuista. Lopuksi ohjelma asettaa rekisterin r0 arvoksi nollan, mikäli luvut olivat oikeassa järjestyksessä ja ykkösen mikäli lukujen paikkoja piti vaihtaa.
Ikinä en ole ohjelmoinut assenblyllä, joten pystyisikö joku ystävällinen sielu auttamaan tämän kanssa niin pääsisin alkuun?
Apua ohjelmaan...
5
1805
Vastaukset
- dgsdfg
Ehkä tästä on apua
; offsetit
LUKU1 = 0
LUKU2 = 4
; siirrä registeriin r1 luku1
r1 - Jaaaaaaaaaaarm
En kyllä mene takamaan toimivuutta, vaikka kääntyykin gnuarm:lla.
--- ESIMERKKI ALKAA ---
.data
.text
_start: .global _start
.global main
b main
#
# Luvut jotka järjestetään
#
luvut: .word 12, 14
#
# Pää ohjelma joka kiertää silmukkaa kutsuen järjestä alirutiinia
#
main:
ldr r0, =luvut
bl jarjesta
b main
#
# Järjestä alirutiini
#
jarjesta:
stmia sp, {r1, r2}
ldr r1, [r0]
ldr r2, [r0, #4]
cmp r1, r2
bhi oikea
str r1, [r0, #4]
str r2, [r0]
mov r0, #1
b loppu
oikea:
mov r0, #0
loppu:
ldmia sp, {r1, r2}
mov pc, lr
.end
--- ESIMERKKI LOPPUU ---- sdsfkishjsl
Pari bugi fixia ja vahan optimointia
jarjesta:
stmia sp!,{r1,r2,lr}
ldmia r0,{r1-r2}
cmp r1,r2
movls r0,#0
ldmlsia sp!,{r1,r2,pc}
str r1,[r0,#4]
str r2,[r0]
mov r0,#1
ldmia sp!,{r1,r2,pc)
Eli tuon sp:n jalkeen on oltava !. - Jaaaaaaaaaaarm
sdsfkishjsl kirjoitti:
Pari bugi fixia ja vahan optimointia
jarjesta:
stmia sp!,{r1,r2,lr}
ldmia r0,{r1-r2}
cmp r1,r2
movls r0,#0
ldmlsia sp!,{r1,r2,pc}
str r1,[r0,#4]
str r2,[r0]
mov r0,#1
ldmia sp!,{r1,r2,pc)
Eli tuon sp:n jalkeen on oltava !.En tosiaan ole ARM:ia varsinaisesta kokeillut kuin kerran harrastus mielestä, noin vuosi sitten.
- PerttiTT
ARMI käskykanta on vähän erilainen ja monipuolisempi kuin 'normaali' assembly.
käskyn malli yleensä:
KÄSKYehtoSetliput kohdeRek , 1lähdeRek, 2lähdeRek, käsky2lähdeRek:lle käskynparametri !tallennetaanko2lähdeRek
Esim.
LDR r6, [r4] ;lataa muistista ==( r6 = *r4;)
LDR r4, [r0 , r2 , LSL #2] ;== ( r4 = *(r0 (r2
Ketjusta on poistettu 0 sääntöjenvastaista viestiä.
Luetuimmat keskustelut
- 2024158
SDP haluaa 40 000 nettomaahanmuuttajaa
SDP:n Suunnanmuutos-vaihtoehtobudjetissa, käy ilmi, että demarit itse asiassa vaativat räjähdysmäistä ”työperäisen” maah1423745Orpo: Velkajarrua vastustavaa puoluetta vaikea ajatella hallitukseen
No Minja Koskelan kommunistipuolue jäi ulos tuosta. Kaikki eduskuntapuolueet vasemmistoliittoa lukuun ottamatta sopivat703087Hienoa! Eduskunta luopui käteisen käytöstä
Nyt tuo sama muutos pitää saada myös muuhun yhteiskuntaan. Käteistähän ei tarvitse tänä päivänä enää kuin rikolliset.431549Orpo loukkaantui fasismiin viittaavasta sanavalinnasta
Mutta miksi loukkaantui? Orpohan on tehnyt yhteistyötä fasistien kanssa jo vuonna 2019, siis jo neljä vuotta ennen loukk271331Sulla on avaimet ja keinot
Jos haluat jatkaa tutustumista. Itse olen niin jäässä etten pysty tekemään enää mitään. Pidempi keppi johon on helpompi211291Ikävä sinua mies
Vuosia kuluu, mutta tunteet ei ole hävinnyt. Tasoittuneet toki, kun ei olla nähty. Järki palannut päähän kuitenkin. Se i191268Mikä tämä henkilö mahtaa touhuta Parkanossa
Kamalaa https://www.ylasatakunta.fi/teksti/pirkanmaan-karajaoikeus-vangitsi-koiran-tappamisesta-epaillyn-6.68.127794.b58321267Kiinnostaa - ei kiinnosta - kiinnostaapas
Selittäkää hämmentyneelle miksi miehiä ei ikinä kiinnosta silloin, kun sitä olisi itsekin kiinnostunut? Sitten kun siirt1151098Martina haluaa Marbellaan
Martinan tekisi mieli ottaa lennot Marbellaan, jossa näkisisi kauniita ja hyväntuulisia ihmisiä. No sitten pitää matkust2151033