Я тоже работаю на OS161. Вот как я это делаю.
Прежде чем уничтожить текущее адресное пространство, скопируйте все аргументы в буфер ядра. Затем, после создания и активации нового адресного пространства, получите указатель стека с помощью as_define_stack и скопируйте эти аргументы в стек. Вы должны упаковать их очень аккуратно, иначе ваш новый стек будет поврежден. Кроме того, как сказал Джеймс, все указатели (начало каждой строки аргумента) должны быть выровнены по 4 байта, а также stackptr. После этого вам нужно соответствующим образом настроить stackptr, чтобы освободить место для этих аргументов.
Вот документ, предлагаемый Гарвардом , подробности вы можете найти на странице 9.
[РЕДАКТИРОВАТЬ]
Я написал блог о системном вызове os161 execv . Надеюсь, я прояснил этот вопрос.
[/ EDIT]