uPic Compiler
- DarkSilver
- Inlägg: 128
- Blev medlem: 24 augusti 2010, 20:26:35
- Ort: Linköping
Re: uPic Compiler
arte skrev:LLVM tror jag har en port till PIC.
Den är nog nästan lika bra som Microchips.
Den plockades bort i senaste versionen av LLVM (2.9) p.g.a bristande underhåll, tyvärr.
Men LLVM/Clang är trots det ett mycket intressant projekt. Jag vågar nästan sätta en peng på att Microchip kommer basera sina framtida kompilatorer på LLVM/Clang.
- DarkSilver
- Inlägg: 128
- Blev medlem: 24 augusti 2010, 20:26:35
- Ort: Linköping
Re: uPic Compiler
Ah,synd. Men jag får ta mig en titt på de andra delarna av projektet. Det verkar rätt så spännande.
Ytligare en liten uppdatering:
- Inline assembly tags har lagts till
- En hel del allvarliga buggar har fixats
- BLINKANDE LED LAMPOR
Ytligare en liten uppdatering:
- Inline assembly tags har lagts till
- En hel del allvarliga buggar har fixats
- BLINKANDE LED LAMPOR

Kod: Markera allt
processor 16F886;
init _CONFIG1, _LVP_OFF & _FCMEN_ON & _IESO_OFF & _BOR_OFF & _CPD_OFF & _CP_OFF & _MCLRE_ON & _PWRTE_ON & _WDT_OFF & _INTRC_OSC_NOCLKOUT;
init _CONFIG2, _WRT_OFF & _BOR21V;
// Init the variables
int hello, hello2, hello3;
function void delayTime() {
<InStart>
movlw .255
movwf vDC
sDelay1:
movlw 0xC7
movwf vDC+1
movlw 0x01
movwf vDC+2
sDelay2:
decfsz vDC+1, f
goto $+2
decfsz vDC+2, f
goto sDelay2
decfsz vDC, f
goto sDelay1
<InEnd>
}
// Main function
function void main() {
call delayTime();
call LightLED(0, 255);
call delayTime();
call LightLED(0, 0);
}
// Light up like a x-mas tree!
function void LightLED(byte tris, byte port) {
TRISA = tris;
PORTA = port;
}
- DarkSilver
- Inlägg: 128
- Blev medlem: 24 augusti 2010, 20:26:35
- Ort: Linköping
Re: uPic Compiler
Tänkte bara ta och bumpa upp projektet lite och posta lite ny info.
Tyvärr inga jättestora förändringar än, mycket på grund av att mina dator har haft problem med BSODs. Det problemet är dock löst
Det som har hänt fram tills nu är att jag har optimerat vissa delar av koden, samt skrivit om stora delar av hanteringen av brackets(måsvingar?). Till följd av det fick också vissa delar av kod scannen och analysen skrivas om för att det skulle fungera ihop. Dock blev resultatet väldigt bra och jag är väldigt nöjd.
Utöver det kan jag meddela att en #include funtion har lagts till, vilket funkar prima
Jag experimenterade även med hexadecimala och binära tal. Fick dock enbart hexadecimala tal att fungera, binära fungerade inte överhuvudtaget på min processor
Någon som kan hjälpa till kanske?
Annars finns det väl inget mer nytt på västfronten.
Tyvärr inga jättestora förändringar än, mycket på grund av att mina dator har haft problem med BSODs. Det problemet är dock löst

Det som har hänt fram tills nu är att jag har optimerat vissa delar av koden, samt skrivit om stora delar av hanteringen av brackets(måsvingar?). Till följd av det fick också vissa delar av kod scannen och analysen skrivas om för att det skulle fungera ihop. Dock blev resultatet väldigt bra och jag är väldigt nöjd.
Utöver det kan jag meddela att en #include funtion har lagts till, vilket funkar prima

Jag experimenterade även med hexadecimala och binära tal. Fick dock enbart hexadecimala tal att fungera, binära fungerade inte överhuvudtaget på min processor

Annars finns det väl inget mer nytt på västfronten.
Re: uPic Compiler
Vad menar du med att det inte funkar?
Är det översättningen från t.ex 0b01010101 till asm (b'01010101'?) som inte funkar?
Är det översättningen från t.ex 0b01010101 till asm (b'01010101'?) som inte funkar?
- DarkSilver
- Inlägg: 128
- Blev medlem: 24 augusti 2010, 20:26:35
- Ort: Linköping
Re: uPic Compiler
Nevermind, det var bara jag som var dum när jag skrev koden för att hantera binära tal
Funkar utmärkt nu.

Funkar utmärkt nu.
Re: uPic Compiler
Imponerande projekt, helt klart! För att lära sig koda avancerat är det ju helt klockrent, inget snack om den saken!DarkSilver skrev:Tanken med projektet just nu är att jag ska lära mig nya saker(både inom assembler och C++) men också som ett enkelt sätt för nybörjare att komma igång med PIC processorer. Därav kommer mitt språk vara förenklat, men förhoppningsvis funktionellt.
Dock känner jag att jag måste ifrågasätta hur vettigt det egentligen är för en nybörjare att inte lära sig ASM eller "riktig" C-kod direkt. Det känns som att om någon börjar med att lära sig "ditt" språk, så blir det en hel del omlärning när denne vill lära sig "riktig" C. Detta då om inte "ditt" språk är så pass C-likt att skillnaden är mycket ringa. Jämförelse med talade språk: Vill man lära sig Svenska är det bättre att lära sig Svenska direkt, istället för att ta omvägen via Norska.
- Klas-Kenny
- Inlägg: 11751
- Blev medlem: 17 maj 2010, 19:06:14
- Ort: Växjö/Alvesta
Re: uPic Compiler
Walle: Men om den här kompilatorn blir riktigt bra när den blir färdig, varför lära sig någonting annat sen? Om man som hobbyist vill komma igång, så kanske man kan klara sig med detta för alltid?
För om man vill bo i Norge så är ju inte Norska någon omväg
För om man vill bo i Norge så är ju inte Norska någon omväg

- DarkSilver
- Inlägg: 128
- Blev medlem: 24 augusti 2010, 20:26:35
- Ort: Linköping
Re: uPic Compiler
@Walle
Tackar
Jo, det kan man ju ifråga sätta lite. Men tanke var ju inte att förenkla det så pass mycket att det inte ens lika C längre. Det kommer fortfarande ha ett C liknande syntax och struktur, men jag tror inte att jag kommer kunna skriva 100% kompatibel C utan att lägga ner stora mängder tid i projektet. Som sagt, det ska vara enkelt att komma igång med för nybörjare, men även dugligt för större amatörprojekt. Sen hur pass bra resultatet stämmer överens med det är ju en annan fråga
@Klas-Kenny
Precis ^^
Tackar

Jo, det kan man ju ifråga sätta lite. Men tanke var ju inte att förenkla det så pass mycket att det inte ens lika C längre. Det kommer fortfarande ha ett C liknande syntax och struktur, men jag tror inte att jag kommer kunna skriva 100% kompatibel C utan att lägga ner stora mängder tid i projektet. Som sagt, det ska vara enkelt att komma igång med för nybörjare, men även dugligt för större amatörprojekt. Sen hur pass bra resultatet stämmer överens med det är ju en annan fråga

@Klas-Kenny
Precis ^^
Re: uPic Compiler
Skriver du en bra kompilator och släpper den så skriver säkert någon annan modifieringar så att den blir C standardiserad.
- DarkSilver
- Inlägg: 128
- Blev medlem: 24 augusti 2010, 20:26:35
- Ort: Linköping
Re: uPic Compiler
Tänkte bara dra upp en snabb uppdatering och säga att jag kommer att byta språk från C liknande syntax till BASIC istället. Dels för att C blev på tok för komplicerat för att jag ska kunna göra något vettigt själv, men också för att det medförde en hel del skumma buggar och andra problem. Det lär inte ta allt för lång till att skriva om syntaxet till BASIC.
Förhoppningsvis kanske jag kan ta och skriva om BASIC kompilatorn sen till C, när jag har lärt mig lite mer
Förhoppningsvis kanske jag kan ta och skriva om BASIC kompilatorn sen till C, när jag har lärt mig lite mer

- DarkSilver
- Inlägg: 128
- Blev medlem: 24 augusti 2010, 20:26:35
- Ort: Linköping
Re: uPic Compiler
Tänkte lägga ut en uppdatering om projektet, har kommit en bit framåt nu och har lyckats göra en del framsteg 
Det som är kvar att göra innan jag känner att det är dags att släppa någon alpha version är:
- Funktioner som kan returnera värden
- Lite småbuggar som måste lösas
- Hjälpfiler
- Kunna köra fler än 1 statement per if, while och do-while sats
- Matematik, har märkt att det kan bli lite småjobbigt att programmera, inte helt säker på om jag väntar så pass länge
Sen ville jag också fråga vad ni tycker måste finns i en duglig kompilator, så jag har lite att gå på

Det som är kvar att göra innan jag känner att det är dags att släppa någon alpha version är:
- Funktioner som kan returnera värden
- Lite småbuggar som måste lösas
- Hjälpfiler
- Kunna köra fler än 1 statement per if, while och do-while sats
- Matematik, har märkt att det kan bli lite småjobbigt att programmera, inte helt säker på om jag väntar så pass länge
Sen ville jag också fråga vad ni tycker måste finns i en duglig kompilator, så jag har lite att gå på

Re: uPic Compiler
Du lägger in ovan ett "blinka LED" program och jag ser en konstig sak med det.
Main-programmet verkar repetera sig själv, normalt gör man det med en evig loop.
De C-kompilers jag har sett på ger en kod som i essens går:
main -> JMP $-1
Så om main avslutas hamnar programmet i en evig loop till en reset eller interrupt kommer.
Oftast gör man då:
Main-programmet verkar repetera sig själv, normalt gör man det med en evig loop.
De C-kompilers jag har sett på ger en kod som i essens går:
main -> JMP $-1
Så om main avslutas hamnar programmet i en evig loop till en reset eller interrupt kommer.
Oftast gör man då:
Kod: Markera allt
void main(void)
{
Initiering_Av_saker();
while(1) // <- Denna funktion verkar du sakna
{
// Här görs ofta en del saker
}
}
- DarkSilver
- Inlägg: 128
- Blev medlem: 24 augusti 2010, 20:26:35
- Ort: Linköping
Re: uPic Compiler
Jo, jag har också märkt det hos de andra kompilatorerna, men jag tycker det är smidigare som jag har gjort det just nu.
Dock kanske det är bäst att göra som de större kompilatorerna, så att nybörjare kan lära sig samtidigt som dem får det lätt att gå till en annan kompilator.
Däremot har jag ju skrivit om min kompilator till ett BASIC liknande syntax istället för C, det blev helt enkelt för mycket för den kunskap jag har just nu. Så den kod du skrev nu borde väl se ut så här i den nya kompilatorn:
Jag märker nu att jag har skrivit lite fel i min statement kod, så det är lär inte riktigt fungera =/
Dock kanske det är bäst att göra som de större kompilatorerna, så att nybörjare kan lära sig samtidigt som dem får det lätt att gå till en annan kompilator.
Däremot har jag ju skrivit om min kompilator till ett BASIC liknande syntax istället för C, det blev helt enkelt för mycket för den kunskap jag har just nu. Så den kod du skrev nu borde väl se ut så här i den nya kompilatorn:
Kod: Markera allt
function main()
// Skriv random initiering här
while 1
//Main loopen här, skriva massa random kod
endwhile
endfunction