Сохранение аргумента, заданного пользователем, в регистре в xv6 - PullRequest
0 голосов
/ 03 ноября 2019

Мы должны добавить системный вызов в ОС xv6, который считает цифры данного номера. Для этого мы должны сохранить число в регистре, а затем создать функцию, которая считывает этот аргумент из регистра и передает его функции, обрабатывающей логику системного вызова. У меня вопрос: как сохранить аргумент, указанный пользователем в реестре?

1 Ответ

0 голосов
/ 06 ноября 2019

В xv6 есть общие регистры, которые вы можете использовать для чтения и записи в пользовательских программах. В c нет функции для записи значения int в регистр, но вы можете использовать встроенную сборку c для этого. например, если ваша переменная a и вы хотите сохранить ее в регистре eax, вы можете использовать этот код:

asm ("movl %0, %%eax;" 
     :       /* no output */
     :"r"(a) /* input is variable a */
     :"%eax" /* clobbered register */      
     );    

, чтобы получить дополнительную информацию о том, как записывать в регистры со встроенной сборкой c, вы можете прочитать этот сайт:http://www.ibiblio.org/gferg/ldp/GCC-Inline-Assembly-HOWTO.html#s5

...