Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Разработать на языке Macro-11 функцию, соответствующую приведённому ниже коду на языке C:
- int test( int ac, char **av )
- {
- int i;
- int n;
- int c;
- char *p;
- char str[ 100 ];
- str[0] = '\0';
- for ( i = 1; i < ac; i++ ) {
- n = xstrtoi2( av[i], &p );
- if ( n < 0 )
- n = 0;
- if ( n > 10 )
- n = 10;
- if ( !p || !*p ) {
- i++;
- if ( i >= ac ) {
- printf( "\rMissing parameter!\r\n" );
- break;
- }
- c = xstrtoi2( av[i], &p );
- } else { c = *p; }
- xstrnset( av[i], c, n );
- strcat( str, av[i] );
- strcat( str, "\r\n" );
- }
- printf( "\r%s\r\n", str );
- return 17;
- }
- I) Разрабатываемая функция должна соответствовать соглашению языка Decus C
- 1. имена функций регистро-зависимые
- 2. аргументы передаются через стек справа-налево (в памяти располагаются в порядке возрастания адресов)
- 3. стек от аргументов очищает вызывающий код
- 4. результат типа char или int возвращается в R0, результат типа long - в паре R0,R1
- 5. регистры R2-R5 должны сохранять свои значения после возврата из подпрограммы
- II) Функции, имена которых начинаются на 'x', приводятся в машинном коде. Их надо перевести на ассемблер,
- по одной функции на модуль, и собрать из них библиотеку. При компиляции задачи должна использоваться эта библиотека.
- III) Остальные необходимые функции принадлежат библиотеке языка C и содержатся в стандартной библиотеке sy:cc.obj
- IV) Программа main, примерно соответствующая такому коду
- (дополнительно включены некоторые проверки корректности работы функции test):
- int main( int ac, char **av )
- {
- printf( "Returned value is %d\r\n", test(ac,av) );
- return 0;
- }
- даётся в виде объектного файла main.obj, размещённого в образе дискеты lab4.dsk
- при сборке в образ задачи должны войти
- 1) объектные файлы main.obj и модуль, содержащий разрабатываемую вами функцию test
- 2) библиотека, содержащая "x-функции"
- 3) стандартная библиотека языка C (sy:cc.obj)
- V) Функции, приводимые в машинном коде:
- === strtoi2 ===========================================
- === strnset ===========================================
- //http://pastebin.com/j8ycqXrf
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement