Advertisement
Ladies_Man

#NUP LAB_4 Task (PDP-11)

May 31st, 2014
542
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Разработать на языке Macro-11 функцию, соответствующую приведённому ниже коду на языке C:
  2.  
  3. int test( int ac, char **av )
  4. {
  5. int       i;
  6. int       n;
  7. int       c;
  8. char     *p;
  9. char      str[ 100 ];
  10.  
  11. str[0] = '\0';
  12.  
  13. for ( i = 1; i < ac; i++ ) {
  14.  
  15.     n = xstrtoi2( av[i], &p );
  16.  
  17.     if ( n < 0 )
  18.     n = 0;
  19.     if ( n > 10 )
  20.     n = 10;
  21.  
  22.     if ( !p || !*p ) {
  23.        i++;
  24.        if ( i >= ac ) {
  25.           printf( "\rMissing parameter!\r\n" );
  26.           break;
  27.        }
  28.        c = xstrtoi2( av[i], &p );
  29.     } else { c = *p; }
  30.    
  31.     xstrnset( av[i], c, n );
  32.     strcat( str, av[i] );
  33.     strcat( str, "\r\n" );
  34. }
  35. printf( "\r%s\r\n", str );
  36. return 17;
  37. }
  38.  
  39.  
  40. I) Разрабатываемая функция должна соответствовать соглашению языка Decus C
  41.  
  42.     1. имена функций регистро-зависимые
  43.     2. аргументы передаются через стек справа-налево (в памяти располагаются в порядке возрастания адресов)
  44.     3. стек от аргументов очищает вызывающий код
  45.     4. результат типа char или int возвращается в R0, результат типа long - в паре R0,R1
  46.     5. регистры R2-R5 должны сохранять свои значения после возврата из подпрограммы
  47.  
  48. II) Функции, имена которых начинаются на 'x', приводятся в машинном коде. Их надо перевести на ассемблер,
  49.     по одной функции на модуль, и собрать из них библиотеку. При компиляции задачи должна использоваться эта библиотека.
  50.  
  51. III) Остальные необходимые функции принадлежат библиотеке языка C и содержатся в стандартной библиотеке sy:cc.obj
  52.  
  53. IV) Программа main, примерно соответствующая такому коду
  54.     (дополнительно включены некоторые проверки корректности работы функции test):
  55.  
  56.     int main( int ac, char **av )
  57.     {
  58.         printf( "Returned value is %d\r\n", test(ac,av) );
  59.         return 0;
  60.     }
  61.  
  62.     даётся в виде объектного файла main.obj, размещённого в образе дискеты lab4.dsk
  63.     при сборке в образ задачи должны войти
  64.     1) объектные файлы main.obj и модуль, содержащий разрабатываемую вами функцию test
  65.     2) библиотека, содержащая "x-функции"
  66.     3) стандартная библиотека языка C (sy:cc.obj)
  67.  
  68. V) Функции, приводимые в машинном коде:
  69.  
  70.  
  71. === strtoi2 ===========================================
  72. === strnset ===========================================
  73. //http://pastebin.com/j8ycqXrf
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement