Cada arquitetura define um "ABI" (interface binária do aplicativo) que basicamente diz "o primeiro argumento vai aqui, o segundo vai aqui, o terceiro vai aqui ... o valor de retorno volta aqui". Você leu a especificação da ABI e, em seguida, usa a ordem e o tamanho dos argumentos de uma função para determinar em qual registro eles vão.
Veja link
Você precisará gerar uma montagem diferente para cada plataforma que deseja segmentar. Mas, você pode estar razoavelmente certo de que todas as plataformas "Linux x86_64" são compatíveis com binários, e assim por diante para x86, ARM, PowerPC, etc. Mas também há o BSD: -)
Veja algumas folhas de dicas para x86 e x86_64 (extraídas de uma rápida pesquisa no google)
Mas também cuidado que os próprios números syscall variam entre as plataformas , então 'open' no x86_64 é 3 mas no x86 é 5.