Na maioria das vezes, o idioma de sua escolha fornecerá funções (de algum tipo) que, eventualmente, mapeiam os syscalls relevantes. . Nesses casos, basta usá-los e chamá-lo por dia; não há necessidade de considerar interfaces syscall. Na verdade, eu diria que, a menos que você esteja escrevendo uma biblioteca padrão, não deve haver necessidade de considerar os detalhes de nível inferior em primeiro lugar. Não é como nos dias do IBM PC original, em que o acesso direto às estruturas de memória poderia aumentar drasticamente o desempenho (e, mesmo assim, era reconhecido como uma solução não ótima, porque limitava muito a portabilidade).
Dito isso, você pode executar syscalls diretos em qualquer idioma que permita imitar o esperado convenção de convocação . Na verdade, isso não é realmente diferente de qualquer chamada interbinária, incluindo chamadas de biblioteca (embora, com bibliotecas, isso geralmente seja um problema menor, já que provavelmente elas serão gravadas na mesma convenção de chamada).
A convenção de chamada dita coisas como como parâmetros e valores de retorno são passados para e de uma função chamada e forma uma parte da ABI (Interface Binária do Aplicativo) de uma plataforma. Note que neste caso, "plataforma" é um termo bastante amplo, abrangendo potencialmente tanto o sistema operacional, ambiente de tempo de execução, linguagem, compilador e configurações (incluindo declarações de nível de código-fonte).
Então, o que você precisa fazer é fazer com que seu outro idioma faça uma chamada de função que esteja em conformidade com a convenção de chamada usada e, em seguida, simplesmente chame a interface apropriada. Se você estiver usando o assembler, isso é trivial, já que você provavelmente já está fazendo todos os parâmetros e resultados passando por você mesmo; Se você estiver usando algo do outro extremo da escala, como BASIC ou Perl, terá muita dificuldade em se adequar a uma convenção de chamada estrangeira porque as linguagens praticamente não possuem o conceito.
Exatamente como você escreveria o código para usar uma convenção de chamada alternativa (ou específica) depende muito da linguagem (e provável compilador) em questão, e é muito ampla para responder em geral. E, claro, você precisa saber qual convenção de chamada deve estar em conformidade.