uPic Compiler

Berätta om dina pågående projekt.
blueint
Inlägg: 23238
Blev medlem: 4 juli 2006, 19:26:11
Kontakt:

Re: uPic Compiler

Inlägg av blueint »

Inget kommandorads gränssnitt så att man kan skripta?
Användarvisningsbild
DarkSilver
Inlägg: 128
Blev medlem: 24 augusti 2010, 20:26:35
Ort: Linköping

Re: uPic Compiler

Inlägg av DarkSilver »

Det kommer väl sen ;)
jbulow
Inlägg: 114
Blev medlem: 22 juni 2006, 21:35:26
Ort: Malmö

Re: uPic Compiler

Inlägg av jbulow »

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.
Användarvisningsbild
DarkSilver
Inlägg: 128
Blev medlem: 24 augusti 2010, 20:26:35
Ort: Linköping

Re: uPic Compiler

Inlägg av DarkSilver »

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 :badgrin:

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;
}
Användarvisningsbild
DarkSilver
Inlägg: 128
Blev medlem: 24 augusti 2010, 20:26:35
Ort: Linköping

Re: uPic Compiler

Inlägg av DarkSilver »

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 :D
Jag experimenterade även med hexadecimala och binära tal. Fick dock enbart hexadecimala tal att fungera, binära fungerade inte överhuvudtaget på min processor :S Någon som kan hjälpa till kanske?

Annars finns det väl inget mer nytt på västfronten.
bearing
Inlägg: 11652
Blev medlem: 2 mars 2006, 01:01:45
Ort: Ängelholm

Re: uPic Compiler

Inlägg av bearing »

Vad menar du med att det inte funkar?
Är det översättningen från t.ex 0b01010101 till asm (b'01010101'?) som inte funkar?
Användarvisningsbild
DarkSilver
Inlägg: 128
Blev medlem: 24 augusti 2010, 20:26:35
Ort: Linköping

Re: uPic Compiler

Inlägg av DarkSilver »

Nevermind, det var bara jag som var dum när jag skrev koden för att hantera binära tal :doh:
Funkar utmärkt nu.
Användarvisningsbild
Walle
Moderator
Inlägg: 7701
Blev medlem: 14 december 2004, 10:32:18
Ort: Stockholm

Re: uPic Compiler

Inlägg av Walle »

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.
Imponerande projekt, helt klart! För att lära sig koda avancerat är det ju helt klockrent, inget snack om den saken!

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.
Användarvisningsbild
Klas-Kenny
Inlägg: 11751
Blev medlem: 17 maj 2010, 19:06:14
Ort: Växjö/Alvesta

Re: uPic Compiler

Inlägg av Klas-Kenny »

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 :)
Användarvisningsbild
DarkSilver
Inlägg: 128
Blev medlem: 24 augusti 2010, 20:26:35
Ort: Linköping

Re: uPic Compiler

Inlägg av DarkSilver »

@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 ^^
blueint
Inlägg: 23238
Blev medlem: 4 juli 2006, 19:26:11
Kontakt:

Re: uPic Compiler

Inlägg av blueint »

Skriver du en bra kompilator och släpper den så skriver säkert någon annan modifieringar så att den blir C standardiserad.
Användarvisningsbild
DarkSilver
Inlägg: 128
Blev medlem: 24 augusti 2010, 20:26:35
Ort: Linköping

Re: uPic Compiler

Inlägg av DarkSilver »

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 :)
Användarvisningsbild
DarkSilver
Inlägg: 128
Blev medlem: 24 augusti 2010, 20:26:35
Ort: Linköping

Re: uPic Compiler

Inlägg av DarkSilver »

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å :D
Användarvisningsbild
Icecap
Inlägg: 26610
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: uPic Compiler

Inlägg av Icecap »

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å:

Kod: Markera allt

void main(void)
  {
  Initiering_Av_saker();
  while(1) // <- Denna funktion verkar du sakna
    {
    // Här görs ofta en del saker
    }
  }
Användarvisningsbild
DarkSilver
Inlägg: 128
Blev medlem: 24 augusti 2010, 20:26:35
Ort: Linköping

Re: uPic Compiler

Inlägg av DarkSilver »

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:

Kod: Markera allt

function main()
       // Skriv random initiering här
       while 1
                //Main loopen här, skriva massa random kod
       endwhile 
endfunction
Jag märker nu att jag har skrivit lite fel i min statement kod, så det är lär inte riktigt fungera =/
Skriv svar