Så ser ett av de skrytexempel ut som australiska Hi-Tech Software använder när det marknadsför sina kompilatorer.
Hi-Tech analyserar alla anrop till printf som förekommer i det program som kompileras, och skapar en specialvariant av funktionen som i sitt standardutförande är extremt generell med många optioner.
– IAR har varit med ungefär lika länge som vi, faktiskt, drygt 20 år, säger Clyde Stubbs, företagets vd.
Clyde Stubbs |
– De är välrenommerade och respekterade. Vi tävlar förstås inte med dem på alla områden, men stora delar av våra marknader är desamma.
Cypress Psoc, Microchips Pic och Silicon Labs 8051 är några av de processorer som Hi-Tech kompilerar för.
Clyde Stubbs är på mässan Embedded Systems Conference i San Jose för att marknadsföra sina kompilatorer.
Printf är bara ett av flera exempel på optimeringar som Hi-Tech kan göra genom sin unika analysmetod, som man kallar "omniscient code generation". Omniscient betyder allvetande, och är ett begrepp som normalt bara brukar användas om Gud, enligt ordboken.
– Just det, som Gud! skrattar Clyde Stubbs.
Företaget har utvecklat sin teknik under de senaste tre åren och i år släpper man allvetande kompilatorer för tre olika processorer.
Det allvetande med analysen är att kompilatorn tittar på alla källkodsfiler samtidigt när den optimerar. Till skillnad från andra optimerare som bara har tillgång till en källkodsfil i taget.
Analysen ger tillgång till information som kan användas för många olika optimeringar.
Kompilatorn kan själv exempelvis bestämma vilka variabler i en 8051 som ska placeras i externt eller internt minne, vilket är ett beslut som normalt programmeraren själv måste fatta.
– Variabler som används på många olika ställen kommer kompilatorn automatiskt att lägga i det snabbaste minnet, förklarar Clyde Stubbs.
Tekniken minskar minnesanvändningen eftersom kompilatorn vågar lägga mer data i processorns register. Och för att funktioner som aldrig är aktiva samtidigt kan använda samma minnesutrymme för sina privata lokala variabler.
– Typiskt får vi 50 procent mindre kodstorlek och 20-30 procent mindre RAM-användning. Och koden kan bli mer än 50 procent snabbare.
En stor vinst görs där programmeraren skrivit egna avbrottsprogram (program som avbryter andra program exempelvis för att läsa av en tangent som plötsligt tryckts ner).
För att det avbrutna programmet ska kunna återställas måste innehållet i de register programmet använder kopieras vid avbrottet. Och till skillnad från en normal kompilator vet Hi-Tech exakt vilka register som används av olika program, och behöver därmed inte spara alla.
Hi-Tech har bestämt sig för att inte patentsöka sin analysmetod. För att slippa avslöja den. Dessutom tror man att man har ett såpass stort försprång att ingen kommer att hinna ikapp på ett bra tag.
Ett av knepen avslöjar dock Clyde Stubbs. Och det är att inte alltid analysera alla beslut färdigt hela vägen, utan att ibland spekulativt prova att lagra en variabel i ett register, och sedan vänta och se om kompileringen kan avslutas utan minneskonflikter.
En annan del av tekniken, som enligt Clyde Stubbs ingen annan gjort förut, är "pekardataflödesanalys". En sådan kartlägger för varje pekare vilka minnesceller den kommer att peka ut under hela programexekveringen. Det betyder att kompilatorn exempelvis kan se att pekaren bara adresserar celler i samma minnesutrymme i närheten av varandra, och därmed bara behöver tilldelas en eller kanske två byte för att adressera, istället för normalfallet fyra byte. Eller kanske kan kompilatorn till och med flytta om och samla ihop de data som pekas ut, för därefter att kunna använda en mindre pekare.
Varför har ingen gjort er typ av analys tidigare?
– En del har ingen gjort. Annat har gjorts i akademiska kretsar. Och annat har gjorts för PC-processorer. Men inom embeddedområdet har ingen gjort någonting. Varför? För att det är svårt, tror jag. På företaget talade vi om idéerna i flera år innan vågade börja, berättar Clyde Stubbs.
– En annan sak är att processorrna blivit snabbare och har tid att räkna på optimeringar, exempelvis på de kostsamma spekuleringarna.
Skulle era analysverktyg kunna användas också för andra optimeringar?
– Ja, faktiskt. En av de saker vi diskuterat är fördelning av processer på olika processorkärnor. Vi har inte gjort det. Men vår analys ger den information man behöver för att göra det, säger säger Clyde Stubbs.
Hi-Tech försöker i första hand hand sälja sin kompilator som plugin till olika tillverkares utveckliingsmiljöer, snarare än att sälja sin egen utvecklingsmiljö.
–Det är logiskt eftersom de ofta exempelvis har bättre avlusningsverktyg än vi, säger Clyde Stubbs.
Tjugo ingenjörer i Australien jobbar för företaget.
– Det blir allt svårare att anställa folk. Vi har nästan full sysselsättning i Australlien, den har inte varit så låg på 25 år. Landets ekonomi växer. Vlket är dåligt för oss, eftersom vi exporterar i USA-dollar, säger Clyde Stubbs.