Descendre à l'assemblage de Ruby à titre de C?
-
20-12-2019 - |
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?
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.:)