Question

Depuis que Ruby vous laisse tomber dans C pour que les bits où la performance est critique et un rubis simple ne soit pas à la hauteur de la tâche et que c vous permet de descendre en montage pour le même type de circonstance, je me suis toujours demandé si Il serait possible d'intégrer la langue d'assemblage à l'intérieur de votre code rubis en tombant d'abord jusqu'à C, puis de l'intérieur du code C tombant à l'assemblage.

J'ai toujours espéré que c'était possible, mais jamais jusqu'à présent trouvé quoi que ce soit pour confirmer ou le nier. En raison de la recherche sur qt (et donc c ++) pour un projet latéral, je suis arrivé sur une déclaration sur Comparaison de Ruby -Lang.com de Ruby avec C & C ++ que dans Ruby

  • Vous ne pouvez pas tomber à l'assemblage

Cela signifie-t-il simplement que vous ne pouvez pas aller directement à assembler, ou que vous ne pouvez pas le faire à titre de C du tout? Qu'en est-il de l'écriture d'une extension à Ruby en C: Puis-je supposer que, étant donné que cela ne vient que c (non intégré dans Ruby), vous pouvez toujours utiliser l'assemblage là-bas et Ruby peut toujours utiliser l'extension C avec l'assemblage?

Était-ce utile?

La solution

Compte tenu du contexte, il semble assez clair que cela signifie que cela signifie dans ruby , vous ne pouvez pas simplement laisser tomber quelque chose de fou comme:

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

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

Ruby ne peut pas vous empêcher d'utiliser quelque chose comme ça dans un objet C lié.

Mais, après avoir vu cela comme exemple, ce serait une bibliothèque assez cool si quelqu'un l'a fait.:)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top