Sida 4 av 4
Re: Bra kurs i assembler med simulator för förståelse mha 65
Postat: 14 september 2013, 19:29:40
av gkar
Nerre skrev:4kTRB skrev:
Just en sån grej som Icecaps optimering av multiplicering med 10 tror jag faktiskt att gcc fixar, MEN koden måste då vara skriven så att 10 är definierad som en konstant.
Konstantdeklarerad eller inte brukar inte generera någon skillnad på koden, så länge som kompilatorn vet att värdet är konstant.
Kollar man på vad som kommer ut ur GCC eller ARMs kompilator för ARM så löser den alla sådana och mer komplicerade saker.
På ARM7, en booth multiplier, tar en extra cykel för varje byte av 0 eller 0xff i sourcen du skall multiplicera med. Detta jämförs med att lösa det med add, sub, rsb och skiftningar. Sedan väljs det bästa.
På 68k tar varje multiplikation (Om minnet inte sviker mig) 38 cykler + 2 cykler om varje grupp av 01 eller 10 i sourcen. Vilket du som assemebler programmerare måste kunna om du vill slå kompilatorn, dvs, du vill ha talet med flest grupper om 00 eller 11 i sourcen för att spara cykler.
Skrev detta förut, men det verkar relavant här också så:
Detta är min assembler, men en kompilator ger samma resultat:
(multiplikationskonstant och kod efter)
2 add r1, r0, r0
3 add r1, r0, r0 lsl #1
4 mov r1, r0 lsl #2
5 add r1, r0, r0 lsl #2
7 rsb r1, r0, r0 lsl #3
8 mov r1, r0 lsl #3
9 add r1, r0, r0 lsl #3
if (a){
b *= 5;
} else {
b *= 7;
}
movs r0, r0
addne r1,r1,r1 lsl #2
rsbeq r1,r1,r1 lsl #3
rsb står för reverse subtract.
I praktiken, om man inte van och slipad i rätt assemblerdialekt gör kompilatorn ett bättre jobb en "standard" assemblerprogrammerare...
Det vanligaste problemet med C är att man skriver kod som inte tillåter kompilatorn att göra full optimering. Men det är ju ett annat problem, antagligen det största...
Re: Bra kurs i assembler med simulator för förståelse mha 65
Postat: 14 september 2013, 19:35:32
av Icecap
Nerre: nu kan det vara så att jag uttryckte mig fel men jag menar rent faktisk en bit hårdvara rimligt lik t.ex. en Vellemann K8055 som medger att man rent faktisk kan ha extern hårdvara inkopplat.
Re: Bra kurs i assembler med simulator för förståelse mha 65
Postat: 14 september 2013, 19:51:44
av Nerre
Ja men poängen med den här kursen är ju att man SLIPPER skaffa sig hårdvara.
Kursen riktar sig ju inte till folk som vill börja programmera en mikrocontroller, den riktar sig till folk som vill förstå hur en mikroprocessor fungerar. Och som troligen aldrig nånsin kommer att BEHÖVA skriva assemblerkod för hårdvara. Så varför skulle de vilja köpa hårdvara för att testa sin kod?
Men jag tror att 90% av alla nybörjare som kommer till forumet här och ställer konstiga frågor (om kod som de försökt skriva av från nån sida på Nätet utan att veta vad den gör) faktiskt skulle ha nytta av att gå igenom den där kursen, även om de nu råkar hålla på med PIC eller AVR.
Re: Bra kurs i assembler med simulator för förståelse mha 65
Postat: 15 september 2013, 00:43:52
av blueint
Icecap skrev:* Kopiera Result till en mellanvariabel.
* Dubbla Result två gg vid att shifta det två gg till vänster.
* Addera kopian. Result är då multiplicerat med 5.
* Shifta Result ett steg ytterligare till vänster vilket ger en 10-faltig multiplicering.
Smart!

Re: Bra kurs i assembler med simulator för förståelse mha 65
Postat: 15 september 2013, 12:13:07
av Swech
Jag kör en annan variant som ger samma resultat och samma antal instruktioner
Var bara kul att det fanns en som jag inte tänkt på
Skifta 1 steg vänster ( Värde = Startvärde*2)
Kopiera till temp (startvärde *2)
Skifta 2 steg vänster ( Värde = Startvärde *8 )
Addera temp ( startvärde * 8 + startvärde *2)
Swech
Re: Bra kurs i assembler med simulator för förståelse mha 65
Postat: 15 september 2013, 15:37:57
av Icecap
Nerre: jag förstår - men likaväl är det extremt mycket mer motiverande för mig att ha en hårdvara som rent faktisk medger att man kan styra något. Det perfekta ville ju vara att ha båda möjligheter, alltså kunde torrköra och/eller ansluta en hårdvara.
Skulle jag designa sånt hade jag nog vald en mer generell op-kod uppsättning, sannolikt en RISC och givit möjlighet att dels köra med index i minne, setup av portar, stackhantering osv. men samtidig satt en "auto-möjlighet" så att man kan komma igång snabbare och sedan bygga på eftersom.
Och jag ville inte kopiera någon specifik µC instruktionsuppsättning, det borde vara mer "generella" funktioner med enkla mnemonics och de funktioner som behövs.
Men det får vänta till jag inte har annat att göra, just nu lekar jag med tanken om att göra en Z80 emulator för Renesas RX-serien, detta för att köra TRS80-program på den. Inte för att jag behöver det men bara för skoj.
Jag hoppas att hinna med inom 3-4 år...
Re: Bra kurs i assembler med simulator för förståelse mha 65
Postat: 15 september 2013, 21:31:00
av Nerre
Jag förstår att de flesta här på forumet hellre skulle ha riktig hårdvara att leka med, men jag postade länken som tips på "en kurs man kan visa de som inte är intresserad av att pilla på hårdvaran" eller "en kurs för de som pillar på hårdvara utan att fatta vad de pysslar med).
Om nån annan har tips på en kurs i assembler som är lika kortfattad och enkel så kan ni ju länka till den här. Att säga att kursen är dålig utan att komma med exempel på nåt som är bättre är inte så konstruktivt.
Re: Bra kurs i assembler med simulator för förståelse mha 65
Postat: 15 september 2013, 22:41:33
av gkar
Pollux upp för kursen!