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
1785
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
- 1191682
Noniin rakas
Annetaanko pikkuhiljaa jo olla, niin ehkä säilyy vienot hymyt kohdatessa. En edelleenkään halua sulle tai kenellekään mi991498Lasten hyväksikäyttö netissä - Joka 3. nuori on saanut seksuaalisen yhteydenoton pedofiililtä
Järkyttävää! Lapsiin kohdistuva seksuaalinen hyväksikäyttö verkossa on yhä pahempi ongelma. Ulkolinja: Lasten hyväksikäy37953Multa sulle
Pyörit 24/7 mielessä, kuljet mun mukana, mielessä kyselen sun mielipiteitä, vitsailen sulle, olen sydän auki, aitona. M29889Kumpi vetoaa enemmän sinuun
Kaivatun ulkonäkö vai persoonallisuus? Ulkonäössä kasvot vai vartalo? Mikä luonteessa viehättää eniten? Mikä ulkonäössä?38831Nainen, olen tutkinut sinua paljon
Salaisuutesi ei ole minulle salaisuus. Ehkä teimme jonkinlaista vaihtokauppaa kun tutkisimme toisiamme. Meillä oli kumm50796Mies, eihän sulla ole vaimoa tai naisystävää?
Minusta tuntuu jotenkin, että olisit eronnut joskus, vaikka en edes tiedä onko se totta. Jos oletkin oikeasti edelleen s43758Okei nyt mä ymmärrän
Olet siis noin rakastunut, se selittää. Onneksesi tunne on molemminpuolinen 😘56748Olet myös vähän ärsyttävä
Tuntuu, että olet tahallaan nuin vaikeasti tavoiteltava. En tiedä kauanko jaksan tätä näin.37740Onko sulla empatiakykyä?
Etkö tajua yhtään miltä tämä tuntuu minusta? Minä ainakin yritän ymmärtää miltä sinusta voisi tuntua. En usko, että olet37720