Sida 1 av 1
Hur programmerar man smart i assembler?
Postat: 5 juni 2008, 04:11:31
av wolfheat
Har programmerat en del i assembler nu, men skulle vilja ha lite allmänna tips på hur man skriver sin kod för att undvika att tappa bort sig, och hålla bra ordning på koden.
Har en del programmeringserfarenheter sedan tidigare av C++ och Java etc och i dessa språk är det betydligt lättare att hålla koll på sin kod. Dels pga att det är tex objektorienterat och att varje enskilt delprogram kan hållas isär från huvudprogrammet, men även pga att koden för att göra samma sak blir mycket längre i assembler. Nu sitter jag med ett 2000 rader långt assemblerprogram som är en enda lång textfil.
När jag hoppar mellan de olika subrutinerna i programmet använder jag för närvarande sökfunktionen. bara en sån sak kanske går att göra betydligt lättare.
Det jag önskar av er som har sysslat en hel del med assemblerprogrammering är väl främst era tips och erfarenheter om sånt som ni kommit på under tidens gång.
Postat: 5 juni 2008, 07:23:46
av Icecap
* Vettiga namn på labels, ska avslöja funktionen direkt. ("Send2LCD", "GetKey", "Execute_Communication" osv.)
* Varje funktion kommenterat ordentligt om funktion osv. behövs därmed inte alltid att vara rad-för-rad.
* Funktioner som är testade och färdiga kan man lägga i en fil som man inkluderar, ger mindre bläddrande.
Det är egentligen ingen skillnad oavsett vilket språk man använder, samma sätt ska gälla. Jag brukar göra så att om jag har en rutin som heter t.ex. "Send2LCD" använder jag "Send2LCD_xx" som labels "inuti" rutinen (xx ersätts av fortlöpande tal 01, 02, 03...) för att säkra mot felhopp vid att ha unika label-namn.
Lägger man sedan till lite "linjer" mellan funktioner som avskiljare blir det ganska lättläst och "segmenterat", man behöver inte undra över hur stor en funktion är.
Postat: 5 juni 2008, 09:21:08
av Nerre
Använda makron för "variabler" och liknande är ofta en vettig ide. Då slipper man hålla reda på vilka register som råkar vara "lediga" just då (har man makrodefinitionerna samlade så ser man direkt där vilka register som används till variabler och inte).
Konsekvens är bra också, alltid använda samma register för loopräknare, som slaskregister osv. (Precis som en C-kompilator oftast gör.)
Postat: 5 juni 2008, 09:24:12
av vfr
Att skriva objektorienterat är egentligen inte beroende av språket. Visst är det lättare att se saker i ett språk som stödjer det direkt, men det går utmärkt att skriva objektorienterat även i t.ex assembler. Använd rätt tänk bara och dela upp programmet på ett liknande sätt som man gjort i t.ex C++ med tänkta objekt och stödfunktioner (metoder) till dessa. Enligt min mening så får man en betydligt bättre överblick på detta sätt och det är lättare att få en snygg struktur på programmet. Dessutom ofta lättare att göra förändringar i dom oika delarna utan att påverka resten.
Postat: 5 juni 2008, 09:46:21
av bjolin
Det går ju även i assembler att dela upp olika funktioner i olika filer och sedan länka ihop dem.
Som tidigare nämnt så är bra kommentarer och beskrivningar av subrutiner viktigt, i synnerhet om koden är tänkt att återanvändas.
En bra editor är guld värd när man programmerar, kanske något som jag har uppskattat mer på senare år än när jag var ung och "bara" körde assembler.
Personligen är jag rätt så förtjust i Emacs. (Jag vet att en del anser att riktiga män anväder vi, men det kan jag bjuda på).
Postat: 5 juni 2008, 09:49:22
av sodjan
Du kan studera Olin Lathrops utvecklingsmiljö ör assembler:
http://www.embedinc.com/pic/dload.htm
Kanske den mest "drivna" fria utvecklingsmiljön för assembler.
Deen inehåller många färdiga lösningar för FIFO buffrar m.m.
För övrigt håller jag med de andra. Det är inget speciellt med assembler.
- Modularisera (d.v.s dela upp koden i flera filer).
- Använd macron.
- Använd övriga assembler verktyg/direktiv så mycket det går.
Speciellt att dela upp projektet i flera asm-filer gör mycket för överblicken.
Att du ska köra relocatable är väl onödigt att säga, det är ju fullständigt
självklart...
Postat: 5 juni 2008, 09:51:34
av sodjan
Admin: flytta tråden ?
Postat: 5 juni 2008, 09:53:38
av strombom
Sodjan: självklart flyttar jag tråden, grattis till 11111 inlägg
