Курс лекций - Микропроцессоры

         

Номера регистров, используемые для передачи


Номера регистров, используемые для передачи параметров в функцию в зависимости от типа аргументов приведены в таблице 1
Таблица 1
Номер аргумента char, однобайтовый указатель int, двухбайтовый указатель long,float Нетипизированные указатели
1 R7 R6,R7 R4 - R7 R1 - R3
2 R5 R4,R5 R4 - R7 R1 - R3
3 R3 R2,R3 R1 - R3
Поскольку при вызове функции значения фактических параметров копируются в локальные переменные, в теле функции нельзя изменить значения переменных в вызывающей функции. Например нужно поменять местами значения переменных x и y:
/* Неправильное использование параметров функции */ void change (int x, int y) {int k=x; x=y; y=k; } В данной функции значения локальных переменных x и y, являющихся формальными параметрами, меняются местами, но поскольку эти переменные существуют только внутри функции change, значения фактических параметров, используемых при вызове функции, останутся неизменными.
Однако, если в качестве параметра функции использовать указатель на переменную, то можно изменить значение переменной, адрес которой будет содержаться в указателе. Для того чтобы менялись местами значения фактических аргументов можно использовать функцию приведенную в следующем примере:
/* Правильное использование параметров функции */ void change (int *x, int *y) {int k=*x; *x=*y; *y=k; } При вызове такой функции в качестве фактических параметров должны быть использованы не значения переменных, а их адреса:
change (&a,&b);

Содержание  Назад  Вперед







Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий