Pergunta

Como Ruby permite que você vá para C para qualquer parte em que o desempenho seja crítico e Ruby simples não esteja à altura da tarefa, e como C permite que você vá para Assembly para o mesmo tipo de circunstância, sempre me perguntei se seria É possível incorporar a linguagem assembly dentro do seu código Ruby, primeiro descendo para C e depois de dentro do código C descendo para Assembly.

Sempre esperei que isso fosse possível, mas até agora nunca encontrei nada que confirmasse ou negasse isso.Por causa da pesquisa em Qt (e, portanto, C++) para um projeto paralelo, me deparei com uma declaração sobre Comparação de Ruby com C e C++ por ruby-lang.com isso em Ruby

  • Você não pode descer para a montagem

Isso significa simplesmente que você não pode ir diretamente para assembly, ou que você não pode fazer isso por meio de C?E se você estiver escrevendo uma extensão para Ruby em C:posso presumir que, como é apenas C (não incorporado em Ruby), você ainda pode usar assembly lá e Ruby ainda pode usar a extensão C com assembly nele?

Foi útil?

Solução

Dado o contexto, parece bastante claro que isso significa, em Rubi, você não pode simplesmente deixar cair algo maluco como:

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

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

Ruby não pode impedir você de usar algo assim em um objeto C vinculado.

Mas, tendo visto isso como exemplo, seria uma biblioteca muito legal se alguém a fizesse.:)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top