Сбрасываете в сборку с 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.

Но, увидев это в качестве примера, было бы неплохо, если бы кто-то сделал это.:)

Другие вопросы по тегам