Вопрос

Поскольку Ruby позволяет вам перейти на C для любых частей, где производительность имеет решающее значение, а простой Ruby не справляется с этой задачей, и поскольку C позволяет вам перейти на ассемблер в тех же обстоятельствах, я всегда задавался вопросом, будет ли это можно встроить язык ассемблера в ваш код Ruby, сначала перейдя к C, а затем из кода C перейдя к ассемблеру.

Я всегда надеялся, что это возможно, но до сих пор не нашел ничего, что могло бы подтвердить или опровергнуть это.Из-за исследования Qt (и, следовательно, C++) для побочного проекта я наткнулся на заявление о Сравнение Ruby с C и C++ на сайте Ruby-lang.com. это в Руби

  • Вы не можете перейти к сборке

Означает ли это просто, что вы не можете пойти напрямую на ассемблеру, или что на C это сделать вообще нельзя?А что, если вы пишете расширение для Ruby на C:Могу ли я предположить, что, поскольку это всего лишь C (не встроенный в Ruby), вы все равно можете использовать там ассемблер, а Ruby все еще может использовать расширение C со сборкой в ​​нем?

Это было полезно?

Решение

Учитывая контекст, кажется совершенно ясным, что это означает Рубин, вы не можете просто бросить что-то сумасшедшее, например:

def func1(arr)
  arr.map { |v| func2(v) }
end

def func2(val)
  asm do
    mov ax, 1234h
    mov bx, ax
  end
end

Ruby не может помешать вам использовать что-то подобное в связанном объекте C.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top