Как реализованы подпрограммы библиотеки ввода / вывода для языков, которые не поддерживают низкоуровневый доступ? - PullRequest
1 голос
/ 27 января 2011

Языки, которые не поддерживают низкоуровневый доступ к машине, такие как ввод-вывод с отображением в памяти, часто (если не всегда) имеют библиотечные процедуры, обеспечивающие такой доступ.Теперь, если сам язык не поддерживает такой доступ, как реализованы эти библиотечные процедуры?

1 Ответ

1 голос
/ 27 января 2011

Это действительно зависит от языка. В некоторых языках есть средство «взаимодействия», которое позволяет методу, написанному на этом языке, вызывать библиотечный примитив, который может быть реализован на другом языке (C, ассемблер и т. Д.).

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

...