C eller Assembler på AVR
C eller Assembler på AVR
Hej!
Beklargar om frågan varit uppe förr men jag har sökt och inte hittat något bra svar. Jag vet att det är lite av en smaksak men ska försöka strukturera några frågor, allt gäller AVR:
1. Tar en compilerad C-kod alltid mer plats i minnet än en Assembler-kod(Vi utgår ifrån att båda koderna gör samma sak och att ingen av dom är onödigt invecklat skriven)?
2. Kan man åstakomma ett program i C som inte går att få till i Assembler?
3. Tvärt om mot 2. Kan man åstakomma ett program i Assembler som inte går att få till i C?
4. Vilken typ av program är lämpligare/enklare att skriva i C resp. Assembler(Detta är en smakfråga såklart)?
Anledningen till att jag frågade är att jag började lära mig C men har nu kommit in på Assembler vilket känns lite lättare att förstå, men det känns som att C är kraftfullare på något sätt. Jag vill höra åsiker av flera om detta.
Mvh Martin
Beklargar om frågan varit uppe förr men jag har sökt och inte hittat något bra svar. Jag vet att det är lite av en smaksak men ska försöka strukturera några frågor, allt gäller AVR:
1. Tar en compilerad C-kod alltid mer plats i minnet än en Assembler-kod(Vi utgår ifrån att båda koderna gör samma sak och att ingen av dom är onödigt invecklat skriven)?
2. Kan man åstakomma ett program i C som inte går att få till i Assembler?
3. Tvärt om mot 2. Kan man åstakomma ett program i Assembler som inte går att få till i C?
4. Vilken typ av program är lämpligare/enklare att skriva i C resp. Assembler(Detta är en smakfråga såklart)?
Anledningen till att jag frågade är att jag började lära mig C men har nu kommit in på Assembler vilket känns lite lättare att förstå, men det känns som att C är kraftfullare på något sätt. Jag vill höra åsiker av flera om detta.
Mvh Martin
Re: C eller Assembler på AVR
1. Finns inget generellt svar på det.
"Ja" om de som skrev C-kompilatorn är duktigare assemblerprogrammerare än vad du är...
2. Nej, självklart inte.
Hur skulle kompilatorn i så fall kunna skapa *sin* assemblerkod ??
3. Kanske...
4. Nej, det är ingen smakfråga.
Det är en rent praktisk fråga och har helt att göra med vad det är man vill göra.
"Ja" om de som skrev C-kompilatorn är duktigare assemblerprogrammerare än vad du är...

2. Nej, självklart inte.
Hur skulle kompilatorn i så fall kunna skapa *sin* assemblerkod ??
3. Kanske...
4. Nej, det är ingen smakfråga.
Det är en rent praktisk fråga och har helt att göra med vad det är man vill göra.
Re: C eller Assembler på AVR
inte nämnvärt men kan beroende på hur kompilatorn samt metallen är byggda ...1. Tar en compilerad C-kod alltid mer plats i minnet än en Assembler-kod(Vi utgår ifrån att båda koderna gör samma sak och att ingen av dom är onödigt invecklat skriven)?
se 12. Kan man åstakomma ett program i C som inte går att få till i Assembler?

ja3. Tvärt om mot 2. Kan man åstakomma ett program i Assembler som inte går att få till i C?
igen beroende på situation problemdomän kund . generellt är C mer underhållsvänligt pga. att det är ett högnivåspråk som fler kan arbeta i . där en slags effektivites vinst ses för dom som räknar LOC per dag som effektivitet . givet .asm i fall där det finns extrema krav på att en specification klaras inom vad metallen kan prestera ...4. Vilken typ av program är lämpligare/enklare att skriva i C resp. Assembler(Detta är en smakfråga såklart)?
Metall = hårdvaran
LOC = Lines of Code
Re: C eller Assembler på AVR
Tack Sodjan!
Jag tror att jag förstår men borde inte svaret på fråga 1. då vara: Nej, inte om de som ......
Jag har för mig att jag har läst någonstans att det är lättare att skriva en kod i C och låta kompilatorn assemblera om det är mycket matematiska beräkningar. Stämmer det eller kan man skriva ekvationer mm rakt av i assembler på något vis(jag gissar på nej)?
Jag tror att jag förstår men borde inte svaret på fråga 1. då vara: Nej, inte om de som ......
Jag har för mig att jag har läst någonstans att det är lättare att skriva en kod i C och låta kompilatorn assemblera om det är mycket matematiska beräkningar. Stämmer det eller kan man skriva ekvationer mm rakt av i assembler på något vis(jag gissar på nej)?
Re: C eller Assembler på AVR
beror på hur väl du kan .asm det är enklare i C - då uttryckt eftersom det är närmre matten man lärt sig grundläggande . kan vara elegantare effektivare i .asm då man bara använder sig av absolut minimum av yta och cykler för att utföra . i en konvertering översättnings kompilation kan vissa saker loopa och ta plats i onödigt kopierande till mellanlagrings regster osv. som man kan styra bort i asm . men 97% av alla program klarar sig utan att behöva tänka på det då man vill kasta på upplevt billigare hårdvara än tidsödande programvaruoptimering ......Jag har för mig att jag har läst någonstans att det är lättare att skriva en kod i C och låta kompilatorn assemblera om det är mycket matematiska beräkningar. Stämmer det eller kan man skriva ekvationer mm rakt av i assembler på något vis(jag gissar på nej)?
Senast redigerad av xraid 16 november 2009, 20:05:41, redigerad totalt 2 gånger.
Re: C eller Assembler på AVR
Det som jag ser som den stora fördelen med program i C är väl att man slipper hålla reda på storlek (bitlängd) på variabler och sånt själv. D.v.s. deklarerar man dem korrekt så talar kompilatorn om ifall man försöker stoppa in nåt som inte får plats.
Det är också svårare att "trassla in sig" om man skriver i C.
Skriver man i assembler gissar jag att det väldigt ofta också blir en massa globala variabler (eftersom det är enklare att hantera än att lägga variabler på stacken eller i olika register). Skriver man i C optimerar kompilatorn och använder register och stacken till mycket.
Det är också svårare att "trassla in sig" om man skriver i C.
Skriver man i assembler gissar jag att det väldigt ofta också blir en massa globala variabler (eftersom det är enklare att hantera än att lägga variabler på stacken eller i olika register). Skriver man i C optimerar kompilatorn och använder register och stacken till mycket.
Re: C eller Assembler på AVR
> Jag tror att jag förstår men borde inte svaret på fråga 1. då vara: Nej, inte om de som ......
Jo, helt rätt, det blev "inverterat" där...
Jo, helt rätt, det blev "inverterat" där...

Re: C eller Assembler på AVR
Det går att köra inline assembler också där det behövs.
Det är mer tidskritiska grejor som är vettig att skriva i assembler, om man nu har sådana. Räkna cycler är sådär kul egentligen.
Det är mer tidskritiska grejor som är vettig att skriva i assembler, om man nu har sådana. Räkna cycler är sådär kul egentligen.
- Swech
- EF Sponsor
- Inlägg: 4750
- Blev medlem: 6 november 2006, 21:43:35
- Ort: Munkedal, Sverige (Sweden)
- Kontakt:
Re: C eller Assembler på AVR
Kör man C så är det lätt att helt förbise hur processorn funkar och
skriva lösningar som blir besvärliga under huven.
Det spelar ju oftast inte någon roll men programkoden blir onödigt stor.
Sen kan man också se att det är väldigt frestande att använda sig
av cut and paste i C.
Man gör en rutin som utför något och sen kopierar man hela rasket
och ändrar bara på t.ex. en hårdvarupinne
eller upprepade beräkningar
t.ex.
If (a+3*x) > (b-4) then...
else if (a+3*x) = (b-4) then....
(man kan ju se hur bra jag är på C... jag vet att man inte skriver så men ni fattar principen)
Swech
skriva lösningar som blir besvärliga under huven.
Det spelar ju oftast inte någon roll men programkoden blir onödigt stor.
Sen kan man också se att det är väldigt frestande att använda sig
av cut and paste i C.
Man gör en rutin som utför något och sen kopierar man hela rasket
och ändrar bara på t.ex. en hårdvarupinne
eller upprepade beräkningar
t.ex.
If (a+3*x) > (b-4) then...
else if (a+3*x) = (b-4) then....
(man kan ju se hur bra jag är på C... jag vet att man inte skriver så men ni fattar principen)
Swech
Re: C eller Assembler på AVR
Assembler är bra för att öka förståelsen för hur processorn jobbar, när man väl har förstått det så bör man klättra vidare mot C. Att sitta och peta på bittnivå helt i onödan är läskigt improduktivt. Det är bara att fråga vilken programmerare som helst som skriver större program än pyttesmå.
- Swech
- EF Sponsor
- Inlägg: 4750
- Blev medlem: 6 november 2006, 21:43:35
- Ort: Munkedal, Sverige (Sweden)
- Kontakt:
Re: C eller Assembler på AVR
Det beror helt på....
Programmen jag skriver ligger pä > 3000 rader. En av de större är ca 6000 rader assembler...
och det är väldigt lite peta på bitnivå....
Swech
Programmen jag skriver ligger pä > 3000 rader. En av de större är ca 6000 rader assembler...
och det är väldigt lite peta på bitnivå....
Swech
Re: C eller Assembler på AVR
Då antar jag att du har ett riktigt bra skäl. Får man fråga vad det är?
- Swech
- EF Sponsor
- Inlägg: 4750
- Blev medlem: 6 november 2006, 21:43:35
- Ort: Munkedal, Sverige (Sweden)
- Kontakt:
Re: C eller Assembler på AVR
Envishet
Har oftast hela stommen till programmen givna eftersom man pulat ihop 150-200 olika projekt.
Swech

Har oftast hela stommen till programmen givna eftersom man pulat ihop 150-200 olika projekt.
Swech
Re: C eller Assembler på AVR
Jag röstar på C. Det finns ju t.o.m exempelkod i C i databladen så ser ingen anledning heller att brottas med assembler där det inte är absolut nödvändigt. Och om man håller på med så pass avancerade saker att man måste använda assembler så vet man nog om det redan. Kompilatorn är ofta bättre än människan på att optimera kod så att programmen blir mindre i assembler behöver inte vara fallet.
Re: C eller Assembler på AVR
Programmerar man mycket i assembler så bygger man upp hela bibliotek
med användbara funktioner med tiden. Då går det betydligt snabbare
sedan att skriva större program. Loopar och andra strukturer standardiserar
man i assembler vilket gör att man snabbare kan få till bra assemblerprogram.
Sånt är betydligt lättare med en processor som har många instruktioner.
med användbara funktioner med tiden. Då går det betydligt snabbare
sedan att skriva större program. Loopar och andra strukturer standardiserar
man i assembler vilket gör att man snabbare kan få till bra assemblerprogram.
Sånt är betydligt lättare med en processor som har många instruktioner.