Это действительно зависит от языка. В некоторых языках есть средство «взаимодействия», которое позволяет методу, написанному на этом языке, вызывать библиотечный примитив, который может быть реализован на другом языке (C, ассемблер и т. Д.).
Например, языки .NET имеют функцию P / Invoke, которая позволяет им вызывать неуправляемые библиотеки DLL (которые могут быть написаны на C, C ++, ассемблере или любом другом языке, который позволяет экспортировать функции из DLL), но для внутреннего CLR используйте также модификатор «внутреннего вызова», который является прямым вызовом примитива библиотеки, реализованного внутри одной из библиотек CLR.