Pregunta

Dado que Ruby le permite bajar a C para cualquier bits donde el rendimiento es crítico y la rubí simple no está a la altura de la tarea, y como C deja caer en el ensamblaje por el mismo tipo de circunstancia, siempre me he preguntado si Sería posible incrustar el lenguaje ensamblador dentro de su código de rubí por primera vez cayendo a C y luego desde el código C que disminuye al ensamblaje.

Siempre he esperado que fuera posible, pero nunca encontré hasta ahora algo para confirmar o negarlo. Debido a la investigación sobre QT (y, por lo tanto, C ++) para un proyecto lateral, sucedí en una declaración en la comparación de Ruby-lang.com de Ruby con C & C ++ que en Ruby

  • No puedes bajar al ensamblaje

¿Significa esto simplemente que no puede ir directamente a ensamblaje, o que no puede hacerlo a través de C en absoluto? ¿Qué pasa si está escribiendo una extensión a Ruby en C: puedo asumir que, dado que es solo C (no incrustado en Ruby), aún puede usar el ensamblaje allí y Ruby todavía puede usar la extensión C con el ensamblaje en él?

¿Fue útil?

Solución

Dado el contexto, parece bastante claro que significa en ruby , no puedes simplemente dejar algo loco como:

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

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

Ruby no puede evitar que use algo así en un objeto C enlazado.

Pero, habiendo visto eso como ejemplo, sería una biblioteca bastante fresca si alguien lo hiciera.:)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top