Muutama kysymykset - Mitä main ()-funktio

B

bharaths_jois

Guest
Hi ppl, minulla on seuraavat pari kysymystä

1.Mikä on prototyyppi Pääasiallisten ()?Onko kääntäjä riippuvainen?

2.Voisiko tuntua epämääräinen kysymys, mutta mitä tapahtuu, jos en ole lähteneet tärkeimmät () toiminta on upotettu järjestelmä,
koska tärkein on kutsuttava ind_crt0 jälkeen alustuksen muistin lohkojen jne. ..?

3.Lets katsovat, että täytäntöönpano sammuu Pääasiallisten (tällä hetkellä) ...Onko ketään, joka olisi valmis kuuntelemaan, mitä me palaamme pääohjelmassa ()?

 
<img src="http://gallery.dpcdn.pl/imgc/News/63471/g_-_550x412_-_s_63471x20150603212606_0.png" alt="image" />Niektórzy użytkownicy poczty Outlook mogą już korzystać z nowej wersji integracji ze Skype – zgodnie z oficjalnym blogiem Microsoftu zmiany ruszają od dzisiaj i znajdziemy je na swoim koncie już w najbliższym czasie. Choć rozwiązanie wciąż znajduje się w fazie beta, powinno znacznie ułatwić korzystanie z komunikatora głosowego z poziomu skrzynki odbiorczej.

Prace nad integracją Skype i…<img src="http://feeds.feedburner.com/~r/dobreprogramy/Aktualnosci/~4/6GB2CNUyNmA" height="1" width="1" alt=""/>

Read more...
 
Perinteisesti tärkein () palauttaa int on kutsuvan ohjelman 0 onnistumisen ja jokin muu arvo, virhekoodin.C alkoi elämä on unix ympäristöön.
Useimmat sulautettujen järjestelmien sivuuttaa tuottoarvo pääohjelmassa (), täytäntöönpanovaltion nollauspainike kun tärkeimmät () palaa.
Lähdekoodia käynnistysvaiheesta tiedosto, "ind_crt0" for your kääntäjä on normaly tarjotaan.Voit muokata lähdekoodia tehdä joitakin käytön palauttamista arvo pääohjelmassa ().

 
Kiitos vastauksesta.Lisäksi, mitä perusteluja läpäissyt päävalikkoon ()?I, kunnes nyt ole käyttänyt.Olisi hyvä, jos voisitte antaa minulle esimerkin, jossa on Embedded System perustelut,
jotka ovat läpäisseet päävalikkoon ja käyttää suurta soveltamisesta, jos sellaisia on.

 
En voi ajatella hakemuksen upotettu koodi jossa kulkee väitteet päävalikkoon () olisi mitään hyötyä.Paitsi ehkä tehdä joitakin koodi kannettavien välillä prosessori vaihtoehdot.
Allthough siellä on joitakin tilanteita, joissa tämä on hyödyllistä?
Tässä on alkanut koodi on Pic30 työkalut kääntäjään.Kuten näette, jos määritellä tunnuksen __ARGV, kahden parametrin version tärkein on tuettu.

main (int argc, char * argv [])Code:;;

; C Run-time käynnistyslevyn moduuli dsPIC30 C-kääntäjän.

; (C) Copyright 2002,2004,2007 Microchip Technology, Kaikki oikeudet pidätetään

;;

; Perusjäämä versio, tiedot käynnistystoimien tukea.

; Linkittäjän kuormien tämä versio kun - tieto-init

; Vaihtoehto on valittu.

;;

; Ks crt1.s varten vaihtoehtoinen versio ilman

; Tiedot käynnistystoimien tukea.

;;

; Entry __reset tulee hallita laitteen reset-ja

; Toimii seuraavasti:

;;

; 1.
alustaa pino ja pino raja rekisteri

; 2.
alustaa psv ikkuna jos __const_length> 0

; 3.
prosessi tietojen käynnistystoimien template

; 4.
soittaa käyttäjän _main saapumispisteet

;;

; Sidotut kohtaan. Init, jotka voidaan kohdentaa

; Johonkin tiettyyn osoitteeseen linkittäjän komentosarjoja.

;;

; Tukee nolla-parametri muodossa tärkeimmät () oletuksena.

; Jos symboli __ARGV on määritelty, tukee kahden parametrin

; Muodossa tärkeimmät ().

;;

; Un-kommentti seuraavan rivin määritellä tunnuksen __ARGV:

;;. Equiv __ARGV, 1

;;. EQU __30F2010, 1

. include "p30f2010.inc". jaksossa. init, koodi. maailmanlaajuinen __resetPRI

. ifdef __C30ELF

. tyyppi __resetPRI @ toiminto

. endif

__resetPRI:

. heikko __reset

. ifdef __C30ELF

. tyyppi __reset @ toiminto

. endif

__reset:

;;

; Alusta pino, PSV, ja tietojen

;;

; Rekistereitä käytetään: w0

;;

; Panokset (määritelty käyttäjän tai linkittäjän):

;; __SP_init

;; __SPLIM_init

;;

; Tuotokset:

; (Ei palaa - nollaa käsittelijä)

;;

; Calls:

;; __psv_init

;; __data_init

;; _main Tai __main

;;mov # __SP_init, w15; alustaa w15

mov # __SPLIM_init, w0;

mov w0, _SPLIM; alustaa SPLIM

NOP ja odota 1 syklircall __psv_init; alustaa psv

rcall __data_init; alustaa tiedot

; Tyhjentää w0, joten ARGC = 0. ifdef __ARGV

rcall __main; soittaa kahden parametrin tärkeimmät () setup

. muuta

puhelun _main; soittaa käyttäjän tärkeimmät ()

. endif. pword 0xDA4000; pysäyttää simulaattori

reset; nollata prosessori. heikko __psv_init

__psv_init:

;;

; Alusta psv ikkuna jos _constlen> 0

;;

; Rekistereistä käytetään: w0

;;

; Panokset (määritelty linkittäjän):

;; __const_length

;; __const_psvpage

;;

; Tuotokset:

; (None)

;;bclr _CORCON, # psv, poista PSV (oletus)

mov # __const_length, w0;

cp0 w0; testi pituus vakioita

bra z, 1f; br jos nollamov # __const_psvpage, w0;

mov w0, _PSVPAG; PSVPAG = psvpage (vakiot)

bset _CORCON, # psv; mahdollistaa psv1: return; ja poistu. heikko __data_init

__data_init:

;;

; Käsitellä tietoa init template

;;

; Malli on null-irtisanotaan, asiakirjat

; Vuonna seuraavassa muodossa:

;;

; Struct data_record (

; Char * dst; / * kohde-URL-osoite * /

; Int len; / * pituus bytes * /

; Int muodossa; / * format code * /

; Char dat [0]; / * muuttujan pituus tiedot * /

;);

;;

; Rekistereistä käytetään: w0 w1 w2 W3 W4 W5

;;

; Panokset (määritelty linkittäjän):

;; __dinit_tbloffset

;; __dinit_tblpage

;;

; Tuotokset:

; (None)

;;

; Calls:

;; __memcpypd3

;;

. equiv FMT_CLEAR, 0; muodossa koodit

. equiv FMT_COPY2, 1;

. equiv FMT_COPY3, 2;mov # __dinit_tbloffset, w0; w0, w1 = TEMPLATE

mov # __dinit_tblpage, w1;

bra 4f; br jatkaa1: lisää w0, # 2, w0; mallipohjaa = 2

addc w1, # 0, w1;

mov w1, _TBLPAG; TBLPAG = tblpage (malli)tblrdl.w [w0], W3; W3 = len

lisätä w0, # 2, w0; mallipohjaa = 2

addc w1, # 0, w1;

mov w1, _TBLPAG; TBLPAG = tblpage (malli)tblrdl.w [w0], W5; W5 = format

lisätä w0, # 2, w0; mallipohjaa = 2

addc w1, # 0, w1;

CLR W4; ylempi = FALSE (oletus)cp W5, # FMT_CLEAR; testi-muodossa

bra nz, 2f; br jos ei FMT_CLEAR;; FMT_CLEAR - selkeät määränpää muistia

joulukuu W3, W3; vähenemä & koe len

bra n, 4f; br jos negatiivinenToistan W3;

clr.b [w2 ]; selvää muistia

bra 4f; br jatkaa;; FMT_COPY2, FMT_COPY3 - kopio tavua

2: cp W5, # FMT_COPY2; testi-muodossa

bra z, 3f; br jos FMT_COPY2setm W4; ylempi = TRUE3: rcall __memcpypd3; kopioi 2 tai 3 tavua4: mov w1, _TBLPAG; TBLPAG = tblpage (malli)

tblrdl.w [w0], w2; w2 = seuraavan dst

cp0 w2;

bra nz, 1b; silmukka ei ole nolla dstretlw # 0, w0; exit (tyhjentää ARGC myös)__memcpypd3:

;;

; Kopioi tiedot ohjelman muistiin tiedot muistista

;;

; Rekistereistä käytetään: w0 w1 w2 W3 W4 W5

;;

; Panokset:

; W0, w1 = lähde osoite (24 bittiä)

; W2 = URL-osoite (16 bittiä)

; W3 = määrän tavuja (parillinen vai pariton)

; W4 = ylempi tavu lippu (0 = false)

;;

; Tuotokset:

; W0, w1 = seuraava lähde osoite (24 bittiä)

;;1: mov w1, _TBLPAG; TBLPAG = tblpage (src)

mov w0, W5; W5 = tbloffset (src)

lisätä w0, # 2, w0; src = 2

addc w1, # 0, w1;tblrdl.b [W5 ],[ w2 ]; dst = lo byte

joulukuu W3, W3; num --

bra z, 2f; br jos tehtävätblrdl.b [W5 -], [w2 ]; dst = hi byte

joulukuu W3, W3; num --

bra z, 2f; br jos tehtäväcp0 W4; testi ylempi lippu

bra z, 1b; br jos vääriätblrdh.b [W5], [w2 ]; dst = ylempi tavu

joulukuu W3, W3; num --

bra nz, 1b; br, jos ei tehdä2: return; poistuaksesi. ifdef __ARGV

__main:

;;

; Alusta pinon frame tukea

; Kahden parametrin muodossa tärkeimmät ()

;;

; Rekistereistä käytetään: w0 w1

;;

; Panokset:

; (None)

;;

; Tuotokset:

; (None)

;;

; Calls:

;; _main

;;

lnk # 6; rakentaa kehysmov # 0, w0; tallentaa null terminaattori

mov.b w0, [w15-6], että ohjelman nimisub w15, # 6, w1

mov w1, [w15-4], argv [0] = & pgmname

mov w0, [w15-2], argv [1] = 0mov # 1, w0; w0 = argc

sub w15, # 4, w1; w1 = & argv

puhelun _main; soittaa käyttäjän tärkeimmät ()ulnk; tuhota frame

return; ja poistu

. endif. loppuun
 

Welcome to EDABoard.com

Sponsor

Back
Top