1 / 20

ANSI - standard ?

ANSI - standard ?. ANSI - standard ?. Om man skriver ett bra C-program och kompilerar fram ”exe”-filen så vore det ju trevligt om det gick att exekvera på flera olika sorters datorer, IBM-PC-typ, MacIntosh, SUN, NEXT etc samt under flera operativsystem DOS, UNIX, OS/2, VMS, AOS, mm.

solada
Download Presentation

ANSI - standard ?

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. ANSI - standard ?

  2. ANSI - standard ? • Om man skriver ett bra C-program och kompilerar fram ”exe”-filen så vore det ju trevligt om det gick att exekvera på flera olika sorters datorer, IBM-PC-typ, MacIntosh, SUN, NEXT etc samt under flera operativsystem DOS, UNIX, OS/2, VMS, AOS, mm. • Det finns två faktorer som tyvärr förhindrar detta • processortyp • olika processorer tolkar maskinkod (ettor och nollor) olika • operativsystem • många av tjänsterna man ber om när man programmerar är tjänster som operativsystemet tillhandahåller och eftersom olika operativsystem fungerar olika så måste tjänsten utföras olika

  3. ANSI - standard ? • Om man skriver ett bra C-program och kompilerar fram ”exe”-filen så vore det ju trevligt om det gick att exekvera på flera olika sorters datorer, IBM-PC-typ, MacIntosh, SUN, NEXT etc samt under flera operativsystem DOS, UNIX, OS/2, VMS, AOS, mm. • Det finns två faktorer som tyvärr förhindrar detta • processortyp • olika processorer tolkar maskinkod (ettor och nollor) olika • operativsystem • många av tjänsterna man ber om när man programmerar är tjänster som operativsystemet tillhandahåller och eftersom olika operativsystem fungerar olika så måste tjänsten utföras olika Repetition

  4. ANSI - standard ?operativsystemtjänst • Betrakta följande program. Funktionen printf(...) är en önskan till operativsystemet om att få ”Hello, world ” utskrivet på bildskärmen /* HELLO.C -- Hello, world */ #include <stdio.h> int main(void) { printf("Hello, world\n"); return 0; }

  5. ANSI - standard ? • Det går alltså inte att standardisera en ”exe”- (maskinkods-) fil. • Det man kan standardisera däremot är hur källkod skall se ut och här skiljer man på två saker • dels C-språkets syntax, hur man skriver C. • dels på vilka färdiga funktioner ( makro) som skall finnas med i ett standardbibliotek à la ANSI . • Varje exekveringsmiljö måste m a o ha sin kompilator

  6. ANSI - standard ?exekveringsmiljö • ANSI-programmet nedan kompilerat för resp exekverat i • DOS miljö • operativsystem-miljön Windows /* HELLO.C -- Hello, world */ #include <stdio.h> int main(void) { printf("Hello, world\n"); return 0; }

  7. ANSI - standard ? • För att en standardfunktion skall kunna användas krävs att • header-filen ( som är en textfil på samma format som källkodsfilen ) inkluderas i källkoden. Denna fil innehåller önskad funktions deklaration ( eller makro ). • dessutom att funktionens maskinkod ( biblioteksrutiner ) kommer med i ”exe”-filen. Detta sker vid länkningen, mer om detta längre fram. /* HELLO.C -- Hello, world */ #include <stdio.h> int main(void) { printf("Hello, world\n"); return 0; }

  8. Hur ett program blir till m h a enC-kompilator och länkare Utkast tillkällkod Papper och penna är en bra början till ett C-program. Kanske utkastet är ett strukturdiagram?

  9. Hur ett program blir till m h a enkompilator Utkast tillkällkod Källkod somtext-fil Källkoden skrivs med en Editor eller ordbehandlare in i en text-fil ( ASCII ?)

  10. Hur ett program blir till m h a enkompilator Andra text-filer, t ex (*.h) -filer Preprocessorn Utkast tillkällkod Kompilator Källkod somtext-fil Objektkods-fil (maskinkod) Kompilatorn översätter till maskinkod. Kompileringen inleds med preprocessorn som bearbetar, omformar källkodstexten enligt preprocessordirektiven. Inkludering av andra textfiler ( *.h ) sker bl a nu. #include <stdio.h> int main(void)

  11. Hur ett program blir till m h a länkaren Andra text-filer, t ex (*.h) -filer Preprocessorn Utkast tillkällkod Kompilator Källkod somtext-fil Objektkods-fil (maskinkod) Biblioteksrutiner, OBJ-filer kanske ur LIB-filer. runtime-system Länkare ”EXE” - fil Länkaren sammanfogar maskinkodsfiler (*.obj) till en programfil ( *.exe ) som är exekverbar. Runtime-delen är kod som måste till för att exekveringen skall kunna ske och har inget med programmets uppgift att göra.

  12. Hur ett program blir till m h a länkare Andra text-filer, t ex (*.h) -filer Preprocessorn Vilka filer som skall kompileras resp länkas anges i ett projekt eller projektfil. Utkast tillkällkod Kompilator Källkod somtext-fil Objektkods-fil (maskinkod) Biblioteksrutiner, OBJ-filer kanske ur LIB-filer. runtime-system Länkare ”EXE” - fil Länkaren sammanfogar maskinkodsfiler (*.obj) till en programfil ( *.exe ) som är exekverbar. Runtime-delen är kod som måste till för att exekveringen skall kunna ske och har inget med programmets uppgift att göra.

  13. Hur ett program blir till, exekvering Andra text-filer, t ex (*.h) -filer Preprocessorn Utkast tillkällkod Kompilator Källkod somtext-fil Objektkods-fil (maskinkod) Biblioteksrutiner, OBJ-filer kanske ur LIB-filer. runtime-system Länkare ”EXE” - fil Operativsystemetladdar primärminnet och startar exekvering Exekvering

  14. Hur ett program blir till, exekvering Andra text-filer, t ex (*.h) -filer Preprocessorn Utkast tillkällkod Kompilator Källkod somtext-fil Objektkods-fil (maskinkod) Biblioteksrutiner, OBJ-filer kanske ur LIB-filer. runtime-system Länkare ”EXE” - fil Data ut Data in Operativsystemetladdar primärminnet och startar exekvering Exekvering

  15. ANSI - standardeninkluderingsfiler assert.h - programdiagnostik under körningctype.h - teckentyptesterfloat.h - flyttalsegenskaper och gränserlimits.h - numeriska egenskaper och gränserlocale.h - anpassning till lokal miljömath.h - matematiska funktionersetjmp.h - icke lokala hopp i programsignal.h - hantering av mjukvaravbrottstdarg.h - variabelt antal parametrarstddef.h - grundläggande typer och makronstdio.h - standard in- och utmatningstdlib.h - generellt användbara funktioner med bl a sorteringstring.h - hantering av textsträngartime.h - hantering av datum och tid Några axplock

  16. ANSI - standardeninkluderingsfiler assert.h - programdiagnostik under körningctype.h - teckentyptesterfloat.h - flyttalsegenskaper och gränserlimits.h - numeriska egenskaper och gränserlocale.h - anpassning till lokal miljömath.h - matematiska funktionersetjmp.h - icke lokala hopp i programsignal.h - hantering av mjukvaravbrottstdarg.h - variabelt antal parametrarstddef.h - grundläggande typer och makronstdio.h - standard in- och utmatningstdlib.h - generellt användbara funktioner med bl a sorteringstring.h - hantering av textsträngartime.h - hantering av datum och tid assert Description Tests a condition and possibly aborts. assert is a macro that expands to an if statement; if test evaluates to zero, assert aborts the program (by calling abort) and asserts the following a message on stderr Syntax #include <assert.h> void assert(int test); Assertion failed: test, file filename, line linenum.......

  17. ANSI - standardeninkluderingsfiler assert.h - programdiagnostik under körningctype.h - teckentyptesterfloat.h - flyttalsegenskaper och gränserlimits.h - numeriska egenskaper och gränserlocale.h - anpassning till lokal miljömath.h - matematiska funktionersetjmp.h - icke lokala hopp i programsignal.h - hantering av mjukvaravbrottstdarg.h - variabelt antal parametrarstddef.h - grundläggande typer och makronstdio.h - standard in- och utmatningstdlib.h - generellt användbara funktioner med bl a sorteringstring.h - hantering av textsträngartime.h - hantering av datum och tid Några funktioner isalnum isalpha isascii iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit toascii tolower toupper

  18. ANSI - standardeninkluderingsfiler assert.h - programdiagnostik under körningctype.h - teckentyptesterfloat.h - flyttalsegenskaper och gränserlimits.h - numeriska egenskaper och gränserlocale.h - anpassning till lokal miljömath.h - matematiska funktionersetjmp.h - icke lokala hopp i programsignal.h - hantering av mjukvaravbrottstdarg.h - variabelt antal parametrarstddef.h - grundläggande typer och makronstdio.h - standard in- och utmatningstdlib.h - generellt användbara funktioner med bl a sorteringstring.h - hantering av textsträngartime.h - hantering av datum och tid Innehåller bl a funktioner för filhantering. Detta är ämnet för en hel föreläsning

  19. ANSI - standardeninkluderingsfiler assert.h - programdiagnostik under körningctype.h - teckentyptesterfloat.h - flyttalsegenskaper och gränserlimits.h - numeriska egenskaper och gränserlocale.h - anpassning till lokal miljömath.h - matematiska funktionersetjmp.h - icke lokala hopp i programsignal.h - hantering av mjukvaravbrottstdarg.h - variabelt antal parametrarstddef.h - grundläggande typer och makronstdio.h - standard in- och utmatningstdlib.h - generellt användbara funktioner med bl a sorteringstring.h - hantering av textsträngartime.h - hantering av datum och tid abort labs realloc abs ldiv atexit lfind atof atoi atol lsearch bsearch ltoa srand calloc strtod ..............

  20. Slut

More Related