Для обеспечения безопасности вы должны распаковать переменные до их отправки. Использование ассемблера для взлома стека параметров может быть несовместимым между компиляторами.
Я не могу говорить за Ruby, но я написал довольно много программ, используя интерфейсы C для Perl и Python. Переменные Perl и Python напрямую не сопоставляются с переменными C, у них есть еще много функций. Например, скаляр Perl может иметь двойные строковые и числовые значения, только один из которых действителен в любой момент времени.
Преобразование между Perl / Python-переменными и C выполняется с использованием pack
и unpack
(в модуле struct
в Python). В интерфейсе C вы должны вызвать определенные API для выполнения преобразования, в зависимости от типа. Таким образом, это не просто прямая передача указателя, и это, конечно же, не связано с ассемблером.