Вътрешният представяне на програма С

Вътрешният представяне на програма С
Вътрешният представяне на програма С

4.6. Вътрешният представяне на програма С

Информационна система на вътрешната среда на изпълнение на С-програма (позовавайки се на "класически" C, а не C ++), както е в близост до "реалност" се сблъскват програмата работи директно в архитектурно ниво, а не като при "спейсър" софтуер. Чрез този език се отнася термина "машина-независим асемблер", както и основните понятия на неговата семантика директно проектира върху съответните елементи на архитектурата, в това число:

"Чистота" на кода. При липса на повиквания към външни функции, компилаторът генерира код, представляващ "нещо само по себе си". Освен това, строго определен имплицитно трансформация, придружен от "вложки" чужд код;

спазването на основните типове данни и представяне на данни формати в процесора. Интеграл видове са свързани с различни размери на машината думи, поддържа набор от операции на аритметика, логически и побитови трансформации;

всички типове данни имат фиксиран размер, което може да се получи с помощта на операцията по програма sizeof. Програмите могат да реализират всяка система за разпределение на паметта и да се движат свободно от едно представителство в друга база данни в едно и също място;

Повикване функции и параметър преминаване

обадете се на подпрограма разговор и връщане към връщането на отбора

Хардуер стека и локални променливи на подпрограмата

От комина на хардуер се намира в RAM, че е възможно да се постави нормални програмата променливи. Поставянето на местните променливи в стека има редица предимства в сравнение с променливи статичните за разположения на точно определени места на RAM. Както бе споменато по-горе, това ви позволява да организирате рекурсия. В допълнение, съвременната архитектура от основно значение за подкрепа на едновременното действие на процесите, работещи на споделени статични променливи. Този така наречен леки процеси, конци, или нишки (конци), които работят паралелно в рамките на една програма. От използването на конци, например, като се основава на работата на всички графични приложения в системата Microsoft Windows 32: една нишка обработва съобщения графична система (натискане на бутоните на клавиатурата и мишката, преначертаване на прозорци, командите проба от меню и т.н.), други теми се занимават с изчисленията, мрежова комуникация, анимация и т.н.

Разни конец работят успоредно на общи статични данни, като по този начин извършването на някаква работа заедно. В този случай, една и съща рутина може да се нарече от различни нишки. За разлика от статичните променливи, които са общи за всички направления, отделен комин за всяка нишка се разпределя. При използване на конец е много важно, че локалните променливи на подпрограмата, пуснати на стека. В противен случай, това не би било възможно едновременно да доведе до една и съща рутина от различни теми: при повторно подпрограма разговор вече се изпълнява в рамките на друга тема, ще унищожи статичен набор от локални променливи на подпрограмата. И при използване на местните набори стека данни от един и същи подпрограма наречена от различни теми, различен, тъй като те са подредени в различни стекове. По този начин, различен конец работа с различни набори от локални променливи, без да пречат един на друг.

Нека разгледаме по-подробно как локалните променливи са поставени в набора от подпрограма от примера на езика на С. В C съчетания нарича функции. Функцията може да има аргументи и локални променливи, т.е. променливи, които съществуват само по време на изпълнението на функцията. Например, помислете за функция ƒ. в зависимост от двата входни аргументи х и у цяло число тип, който използва три местни променливи. В и С и типа на цяло число. Функцията връща целочислена стойност.

Да предположим, че в някакъв момент програмата нарича функция ƒ с аргументи х = 222, г = 333:

Обаждащият се избутва на действителната стойност на аргументите х и у ƒ функция върху комина, на върха на стека е първият аргумент на функцията, при това - на втория аргумент. Извикването на функциите е преведен на следните команди:

В началото на функция CTEK операция ƒ е както следва: