C-programma te vinden grootte van de processor

HAI echo47,

Alle variabelen automatisch worden opgeslagen in de stack segment, behalve de statische.De statische variabelen worden opgeslagen in data segment.Ik heb al ingediend twee methoden voor het vinden van grootte van de compiler.Maar cksivaram vroeg programma dat is de reden waarom ik geen gebruik heeft gemaakt gebouwd in opdracht, maar uw antwoord ook correct.Toegevoegd na 13 minuten:hai cksivaram,

Tot nu toe Wat ik heb gegeven programma's zijn allemaal voor het vinden van die compiler het is?niet voor de processor.Ik probeer voor de processor.binnenkort zal ik u sturen.

 
sureshreddy wrote:

HAI echo47,Alle variabelen automatisch worden opgeslagen in de stack segment, behalve de statische.
De statische variabelen worden opgeslagen in data segment.
Ik heb al ingediend twee methoden voor het vinden van grootte van de compiler.
Maar cksivaram vroeg programma dat is de reden waarom ik geen gebruik heeft gemaakt gebouwd in opdracht, maar uw antwoord ook correct.
Toegevoegd na 13 minuten:
hai cksivaram,Tot nu toe Wat ik heb gegeven programma's zijn allemaal voor het vinden van die compiler het is?
niet voor de processor.
Ik probeer voor de processor.
binnenkort zal ik u sturen.
 
De C-norm zegt niets over het geheugen segmenten.

Sommige processoren hebben niet gesegmenteerd geheugen.

De grootte van een C-int kan afwijken van de processor grootte.Het is de uitvoering afhankelijk is.Ook moet een int ten minste 16 bits, zelfs op een 8-bits processor.(Sommige compilers bieden een 8-bit int optie, maar die modus niet voldoen aan norm C.)

 
Dat is niet waar altijd.Auto vars kan worden opgeslagen in de registers ook.Als ik niet verkeerd ben C-norm specificeert niet precies opslaglocatie voor auto's en dit is de uitvoering afhankelijk is.ckshivaram wrote:

"Voor het vinden van de grootte van de processor waar u gebruik int, maar wat is de grootte van het karakter van een 8 bit controller / processor. Door te kijken naar pin diagram van de processor Hoe vind je de grootte."

Heeft iemand zeggen dat hij / zij in staat is om proc grootte bepalen door het tellen van pennen?
Voor een beter resultaat dat u kunt gebruiken bij het tellen van datasheet pinnen.Samen met pin namen die u kunt vinden grootte van de proc daar ook.Hai Artem,Mijn punt over de automatische variabele altijd op te slaan in stack segment TRUE uitzondering voor statische variabelen.wat u zei over de automatische variabelen is niet correct, want als u opgeeft registreren trefwoord voor een variabele dan alleen dat bepaalde variabele zal slaan in registers.Hai, Ckshivaram,Ja, Sivaram wat u zegt juist is voor het vinden van 8 bit 0r 16-bits processor, maar een punt dat ik heb om hier te voegen, is dat gebaseerd op het aantal lijnen van de gegevens die beschikbaar zullen zijn op pin diagram, gebaseerd op dat u gemakkelijk kunt vinden.

Hai Eco47,

PLZ verwijs nogmaals en geef mij antwoord.
Als C-norm niet zegt iets over het geheugen betekent segmenten waar de variabelen gaan slaan.Mijn oogpunt heeft geheugen segmenten zoals TEKST OF CODESEGMENT, DATASEGMENT, HEAPSEGMENT, en STACK segment.Nog segment genoemd bebouwde segment, maar we zijn niet vaak over te praten.Een ander ding is dat de omvang van soorten gegevens niet afhankelijk van de processor altijd afhankelijk van de compiler.

 
De ANSI / ISO C standaard definieert de taal, niet hoe de compiler te voeren.Het voorkomt waarbij wordt aangegeven waar de compiler wel of niet moet bewaren niets, en laat die besluiten tot de uitvoering.De standaard noemt nooit stapels of geheugen segmenten.Sommige implementaties hebben niet deze mechanismen.

'const' is een type qualifier dat beperkt hoe een object kan worden benaderd.Het is niet een segment.

Hier zijn de 1990 en 1999 edities van de C-norm.Ongeveer 10 megabytes.
http://rapidshare.com/files/121230979/C_standards.zip.html

 
sureshreddy wrote:Hai Artem,Mijn punt over de automatische variabele altijd op te slaan in stack segment TRUE uitzondering voor statische variabelen.
wat u zei over de automatische variabelen is niet correct, want als u opgeeft registreren trefwoord voor een variabele dan alleen dat bepaalde variabele zal slaan in registers.
 
Hai Artem,
De link die u hebt gegeven is niet opening.can u zenden mij weer link.

 
Link Artem's werken voor mij in Firefox.Het is een FTP-link, dus zorg ervoor dat uw browser ondersteunt FTP.

Hier is de IAR pagina met dezelfde link genaamd "AVR IAR C / EG Compiler Reference Guide":
http://www.iar.se/website1/1.0.1.0/108/1/

 
echo47 wrote:

De ANSI / ISO C standaard definieert de taal, niet hoe de compiler te voeren.
Het voorkomt waarbij wordt aangegeven waar de compiler wel of niet moet bewaren niets, en laat die besluiten tot de uitvoering.
De standaard noemt nooit stapels of geheugen segmenten.
Sommige implementaties hebben niet deze mechanismen.'const' is een type qualifier dat beperkt hoe een object kan worden benaderd.
Het is niet een segment.Hier zijn de 1990 en 1999 edities van de C-norm.
Ongeveer 10 megabytes.

http://rapidshare.com/files/121230979/C_standards.zip.html
 
Ik denk niet dat er een perfecte oplossing.

Ik zou likley wedden als de volgende waar is, dan weet je de gegevens breedte van de processor.Sommige mensen kunnen denken dat de volgende zou nooit gebeuren, goed je verkeerd bent.De TI C-compiler voor de 320C3x gezin dit waar is ... alle generieke C datatypes zijn 32-bt breed ... periode.
if (sizeof (char) == sizeof (int)) & & (sizeof (int) == sizeof (long))
printf ( "Processor Data Width =% u \ r \ n", sizeof (int) *

<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Koel" border="0" />

;

(sizeof (int) *

<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Koel" border="0" />

is meestal de grootte van de processor in de meeste gevallen, maar niet alle.Ik kan veel voorbeelden waar dat niet het geval is.

(& VAR2 - & var1) zeer waarschijnlijk niet zal worden van hulp, omdat de linker kan worden gegevens breder dan de oorspronkelijke gegevens breedte af te stemmen.

Aangezien C is een high-level taal, kan de compiler gemakkelijk verbergen van de werkelijke breedte van de processor.Een compiler kan een 8-bits processor handvat 16-bit, 32-bit, 64-bit integer C typen, en al uw activiteiten niet kunnen bewijzen van het feit in C.

Sommige van de soorten in "stdint.h" kan helpen voorzien in een aantal aanwijzingen, maar waarschijnlijk niet 100% juist.

Ik denk dat een manier om de zeer maximale breedte van een processor kunnen worden te bepalen is de sizeof () een pointer.Ik denk dat alle processors die ik ooit heb gezien hebben een adres bus groter dan of gelijk aan de grootte van de databus.Waarschijnlijk is er enige processor die niet aan deze regel, maar dit kan worden gebruikt voor de meeste processoren.

Ik denk niet dat er een 100% draagbare manier om de breedte van een processor in C. Ik moet denken over dit ene een beetje meer te bepalen ...

 

Welcome to EDABoard.com

Sponsor

Back
Top