1 Introducao ¸ ˜ ¸deEA870,¸c˜aodalinguagemC, Estamos comecando uma nova fase do curso a utiliza no lugar do uso do assembly. Alguns podem ate reclamar que quando estavam se ´ acostumando muda tudo, tem que aprender uma linguagem nova, mas com certeza o uso do ”C”vai facilitar bastante o trabalho. Estetutorialtemointuitodeserapenasum”pontape´”inicialnoaprendizadoda linguagemC,sendoqueamaiorpartedoaprendizadoocorrer´anodia-a-dia,nasdifi-culdades enfrentadas a cada programa, e com o costume de programar em C. Alinguagem(vocabul´ario)utilizadanestetutoriale´,namedidadoposs´ıvel,amais simples,comainten¸ca˜odequetodosentendamrealmentecomoascoisasfuncionam emC,etamb´emcomointuitodetirartodososmedosqueaindapossamexistir. Infelizmentev˜aohaveralgunstermosmeioestranhos,masquecomotemposetornar˜ao comuns a todos. ”Programar´es´oisso,resolverproblemasdavidarealdeforma”entendı´vel”ao computador.Mostrar-lhecomovocˆefez,emumalinguagemqueeleentenda.”
1.1Histo´ricodoC Nade´cadade70,nosLaborato´riosAT&TBell(EUA),alinguagemCfoicriada,tendo comoprincipalmotiva¸c˜aoodesenvolvimentodosistemaUNIXemumalinguagemde altonı´vel.O”C”setornouferramentainsepara´vel/indispens´avelemtodosossistemas UNIX, e com este foi sendo bastante difundida. Com o passar do tempo havia diversos compiladores ”C”, mas com diversas incom-patibilidades entre el o em 1983 o ¸ es.Ent˜aInsitutoNorteAmericanodePadronizacao ˜ (ANSI)criouumcomitˆeparaapadronizac¸a˜odalinguagemC.Oresultadodesta padronizac¸a˜ofoiconcluidoem1990e´ehojeopadr˜aointernacional,chamadode”C ANSI”.Nestapadroniza¸ca˜oforamdefinidasalgumasfu¸esp,que nco˜esba´sicasduorte deveriamserfornecidaspeloscompiladores,apesardelasn˜aofazerempartedalin-guagem. UmadasgrandesvantagensdalinguagemC´eauni˜aoharmoniosaentrediversas caracterı´sticasdelinguagensdebaixon´ıvel,eascaracteristicasdaslinguagensde altonıvel.AlgumaslinguagensantecessorasaoCtinhamcertascaracterı´sticasmuito ´ favor´aveis,masnogeralerammuitorestritasoumuitocomplicadas.Ja´oCconseguiu unirtantosimplicidadeequantopotencialidadeemsuasaplicac¸o˜es.Comissomesmo tarefas muito complexas podem ser realizadas com uma relativa simplicidade.
1
2 Compilador ICC11 NocursodeEA870ocompiladorutilizado´eoICC11,queapesardena˜oatendertodos osquesitosdoCANSI,atendeaomenososquesitosba´sicos.Portantoqualquerlivro quetratedoCANSIpode(edeve)serutilizadocomoreferˆencia. Aolongodestetutorialmostraremostantodefinic¸o˜esdoCpadr˜ao,quantodefini¸c˜oes especı´ficasdoICC11(ondehouveremdiferenc¸as). 2.1 Sintaxe da linha de comando AsintaxedocomandoparacompilarumprogramautilizandooICC11´easeguinte: icc11[opc¸o˜es]nomedoarquivo.c Asopc¸˜oessa˜oasseguintes: -v verbose,mostranatelaasac¸oesqueest˜aosendoexecutadas ˜ -o Nome do aqtuivo de saida, pad ˜ ´e iccout.s19 rao -l Cria o arquivo contendo a listagem em assembly, com o nome ¡arquivo de saida¿.lst -E Paraaexecuc¸a˜oapo´sopre-processamento,gerandoumarquivo.i -S Compilesparaassembly,masna˜omontaoprograma(na˜ogeraarquivoobjeto) -s Modosilencioso.N˜aomostrara´natelaasaco˜es ¸ Assim para compilar o programa contido no arquivo prog1.c, gerando o arquivo objetocomonomedeprog1.s19,alistagemcomprog1.lst,evisualizandoasac¸o˜esdo compilador utilizamos a seguinte linha de comando: icc11 -v -l -o prog1.s19 prog1.c 2.2Processodecompilac˜ao ¸ Oprocessodecompilac¸a˜odeumprograman˜aoe´direto,sa˜onecessariosv´ariospassos ´ atequesechegueaoco´digoobjeto(.s19). ´ Oprimeiropassoe´aana´lisedoc´odigo,pelopr´e-processadorC,embuscadeerros, eexecutandodiretivasdopr´e-processador,como include e define . Ao final deste passo tem-seumnovoarquivo,comextens˜ao .i ,quesera´utilizadonoproximopasso. ´ Osegundopassoe´oprocessodetraduc¸a˜oparaassembly,ira´converteroc´odigoem Cparaumco´digoassembly,euniroconte´udodoarquivo crt.s comoc´odigoassembly gerado, criando o arquivo .s . Oterceiropassoe´oprocessodemontagem,queir´atraduziroc´odigoassembly gerado,paraumarquivoobjeto,numformato(s19)quej´apodesercarregadono HC11atrav´esdoBUFALLO.