Сбрасываете в сборку с Ruby через C?
Так как Ruby позволяет вам переходить в C для любых битов, где производительность критична, а обычный Ruby не подходит для этой задачи, а поскольку C позволяет вам переходить в сборку при тех же обстоятельствах, я всегда задавался вопросом, будет ли это Можно встроить язык ассемблера в код Ruby, спустившись вниз до C, а затем из кода C спустившись в ассемблер.
Я всегда надеялся, что это возможно, но до сих пор никогда не находил ничего, что могло бы подтвердить или опровергнуть это. Из-за исследования Qt (и, следовательно, C++) для стороннего проекта, я натолкнулся на утверждение о сравнении Ruby-lang.com на Ruby с C & C++ и в Ruby
- Вы не можете перейти к сборке
Означает ли это просто, что вы не можете перейти непосредственно к сборке или что вы вообще не можете сделать это с помощью C? Что если вы пишете расширение для Ruby в C: могу ли я предположить, что, поскольку это просто C (не встроенный в Ruby), вы все равно можете использовать там ассемблер, а Ruby все еще может использовать расширение C со сборкой в нем?
1 ответ
Учитывая контекст, кажется довольно ясным, что это означает, что в Ruby нельзя просто отбросить что-то безумное, например:
def func1(arr)
arr.map { |v| func2(v) }
end
def func2(val)
asm do
mov ax, 1234h
mov bx, ax
end
end
Ruby не может помешать вам использовать что-то подобное в связанном объекте C.
Но, увидев это в качестве примера, было бы неплохо, если бы кто-то сделал это.:)