Wiki-en veut du vieux:)?
Bienvenu dans le Forum (et for Femmes:)!) des 'wikinenveut'Smile!
On y discute de tout les sujets, concernant l'exclusion, le droit des pères, l'écriture et l'art en général, mais surtout et sinon de Linux et des Logiciels Libres et des NTIC, par et pour les gens de R.2000:)!
Everybody welcomes at Home:)!
Rechercher
 
 

Résultats par :
 


Rechercher Recherche avancée

Shopactif


Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Partenaires
Forum gratuit


Tchat Blablaland



Linux History - Asm

Voir le sujet précédent Voir le sujet suivant Aller en bas

Linux History - Asm

Message  Milux le Jeu 20 Jan - 7:17

L'histoire d'une maladie

Comment exactement j'ai eu l'idée d'écrire quelque chose en assembleur pour Linux, honnêtement, je ne me souviens pas en ce moment :-). Il semble d'un intérêt purement scientifique, ou en raison d'un esprit curieux. C'est probablement dans le 1998 (désormais lointaine) (ou 1997?) Année. Si je me souviens, je voulais juste essayer de faire avancer certains de ses bibelots assembleur de DOS à Linux. Il me semblait que cela est facile - il suffit de passer une opération familière, nom de code RTFM. Après avoir passé quelque temps à chercher des informations, je me suis soudain rendu compte que l'opération échoue à cause de cette TFM très n'existe pas. Oui, bien sûr, j'ai trouvé l'Assemblée-HOWTO, mais il était à cette époque conviendrait le nom de l'Assemblée-HOWnotTO - sauf pour une liste d'assembleurs pour Linux, tout le reste a été arguments sur le thème «Avons-nous besoin de nous» (mais pas de sens). Oui, bien sûr, était le code assembleur dans le noyau, inserts assembleur dans les différents programmes et les bibliothèques, et même dans le test de la distribution a été nasm'a quelques exemples. Mais ... que, en général, Linux permet de compiler le code assembleur et appeler les fonctions de bibliothèque et personne ne doutait. Cependant, nous ne prenons pas les mains nues. Linux est encore jeune, je pensais, mais probablement dans le BSD a déjà tout. Ou du moins sous Unix en général, bien que dans certains ... Ou du moins ... Ou peut-être ... Je me souviens seulement je pouvais trouver un guide, il semble SCO Unix.

La conclusion de tout ce hit dans sa simplicité - pas d'applications plus ou moins en langage d'assemblage sous Linux (et autres Unix), personne n'a encore écrit (à l'exception des virus par exemple Staog). Il ya en fait était clair que «si nous n'avons pas, alors qui est." Linux, puis commencer à taper leur chiffre d'affaires, et «tous les assembleur communauté progressiste" assis sous DOS, et seulement réussi à tomber sur Windows. Me regardant, ils ont juste secoué son doigt sur sa tempe.

Ce qui a suivi ont été tranquille cueillette dans les sources du noyau, la bibliothèque C, et diverses pages de manuel, et toutes sortes d'expériences, s'étendant sur plusieurs mois. À un certain point, à la lumière un «bonjour, monde!". La taille de quelques centaines d'octets, il affiche un message merveilleux et a travaillé directement avec le noyau, sans passer par la bibliothèque C. Ce fut une victoire.

Le choix d'assemblage a été fait, même dans les premières étapes - avait l'habitude de tasm mode idéal, je ne pouvais pas utiliser de gaz. L'alternative était nasm, avec lui, j'ai brièvement savait aussi loin que DOS. As86 était encore, mais il m'a dit une fois juste n'ai pas aimé (peut-être en vain). D'autres options en ce que le temps n'existait pas.

Les informations obtenues devraient être systématisées: ce qui devrait être un programme comme pour compiler, comment faire des appels système, la liste de la plupart des appels, la façon de travailler avec la ligne de commande, etc etc - Absolument tout ce que vous devez savoir lorsque vous passer à une nouvelle plate-forme. Bien sûr, toutes les informations extraites de leurs propres mains, essentiellement empirique (et maintenant il suffit de taper quelques mots dans Google et vous obtiendrez la réponse à toutes ces questions :-). Comme la langue des données d'expression a été mis à l'anglais pour les raisons à l'origine un plus large public et de l'universalité (en plus de public russe à l'époque n'avait pas propre), qu'à l'avenir elle-même a maintes fois été à la hauteur. Et un homme qui sait assembleur et Unix, et ne pas être capable de lire techniques texte en langue anglaise - il est du domaine de la fantasy. Le résultat d'avancement des travaux de recherche a été l'apparition sur les pages Internet "Linux/i386 page programmation en assembleur» à http://lightning.voshod.com/asm/, qui, entre autres, a une description du processus de chargement des fichiers ELF, et ma liste d'appels système .

Ensuite, j'ai travaillé comme administrateur système à un fournisseur de services Internet local, respectivement, des problèmes de ressources pour accueillir et soutenir les pages n'ont pas connu. Il convient de faire une digression. Dans une page d'adresse (maintenant bien sûr pas en vigueur plus) vous pouvez voir l'éclair mot. Il n'y avait pas par hasard - cette page a été comme une partie de ce projet. Lightning - il était une distribution Linux adapter notre LUG local. En fait, ils ne traitent avec moi et Nick Kurshev. La distribution a été révolutionnaire pour l'époque - à un moment où tout le monde est en appui sur les ordinateurs de bureau Linux, nous creusions dans la direction opposée - l'accélération maximale et de réduire la taille, et des moyens radicaux. Mais ensemble, nous l'avions pour des raisons évidentes n'ont pas nui, si la foudre en toute sécurité morts d'ici la fin de 1999, simultanément avec la mort du fournisseur, et donc l'hébergement (mais, comme un lointain écho, quelques années plus tard vint une Linux-).

Mais tandis que le fournisseur était encore en vie. Assembler la page assez rapidement commencé à attirer davantage l'attention. J'ai commencé à poser des questions, j'ai commencé à y répondre. Bientôt apparurent les asmutils première version, que seule l'huile sur le feu - il s'est avéré que l'on peut non seulement jouer avec l'assembleur, mais aussi de créer quelque chose de vraiment utile. Avant cela, de tout doute qu'il ya une vie sur Mars :-)

En outre, le asmutils code depuis le début a été le principe de tolérance (je pense que beaucoup d'exemples de code assembleur portable, vous ne trouverez pas) qui a permis de démarrer le projet dès le FreeBSD, et ensuite sur NetBSD et OpenBSD. Comme vous pouvez le deviner, le transfert du projet à d'autres systèmes a été accompagnée par la cueillette même, en l'absence de TFM. Certes, au cours de l'action a été découvert des caractéristiques intéressantes des systèmes, tels que la mort de BeOS de l'appel système «mauvais». Ainsi, dès la page principale "Linux/i386 page programmation en assembleur" a dégénéré en un document intitulé «Introduction à la programmation en assembleur UNIX", qui est déjà considéré les systèmes * BSD et BeOS. Alors j'ai décidé de prendre le soutien de l'Assemblée-HOWTO, et j'ai essayé de l'amener dans la forme appropriée à son nom. Et puis il s'est avéré que nous ne sommes pas seuls dans l'univers - Brian Raiter avec moi à mâcher la même pierre, mais d'autre part, en mettant l'accent sur ELF ...

Autre détail intéressant, qui a été planté au asmutils - obtenir la plus petite taille du code en optimisant les instructions de montage. Bien sûr, idéalement, il devrait faire face à l'assembleur de compilateur. À ce jour, les progrès dans ce sens là, mais «assembleur optimisant" reste un rêve. A cette époque, a été rien de tel - et j'ai écrit un ensemble de macros qui au lieu d'appliquer les règlements pourraient réaliser des gains notables dans le montant du programme.

Asmutils histoire complémentaires peuvent être brièvement vu dans le ChangeLog appropriées. Assez rapidement rejoint le projet un peu plus anormale, et la fonctionnalité est passé à un niveau acceptable tout à fait ... Un autre moments marquants - l'intro premier assembleur sous Linux - feuilles. Bien sûr, avant même qu'il y avait une intro Linux, écrit en C en utilisant différentes bibliothèques graphiques. Cela a également pesé moins de 400 octets et utilise le framebuffer. Juste bras tourné le local Cafe Parti, où elle n'a tout simplement pas trouver la nomination :-) Sa description est dans son code source. Bientôt, sur cette base il ya d'autres intro graphique.

départ C, en raison de mauvaises habitudes d'un outil particulier (caractéristique de tous les nationaux-DOS programmeurs), j'ai rapidement ressenti le besoin de la manière habituelle pour moi dans la visionneuse de fichiers. Donc, j'ai immédiatement commencé à essayer de convaincre Nicholas Kursheva déplacer votre éditeur hexadécimal biew sur Linux. Posoprotivlyavshis à l'esprit, il a finalement décidé de l'essayer. J'ai aidé comme je pouvais, et après un an il y avait une version d'essai pré-sous Linux. Et avec la version 5.0 biew hardiment entré dans le monde d'Unix, le premier hexagone cross-platform-rédacteur en chef avec l'open source. Son histoire vous pouvez lire sur le site Web du programme et dans la documentation. Et en général, l'apparence des pages et des programmes en assembleur a attiré l'attention d'un plus large éventail de pirates, et impliquait naturellement et le développement d'instruments appropriés. Ont commencé à apparaître de nouvelles et de relancer monteurs vieilles, des débogueurs, toutes sortes d'outils (parfois notre liste de diffusion est devenu un lieu très animé, des dizaines de courriels c par jour). Bien sûr, ce n'était pas la seule incitation pour le développement d'outils - du monde de Windows dans le monde de Unix tiré les amoureux se séparent ...

À la fin de 1999, l'information était déjà si grande que l'idée d'écrire un livre. Monde à cette époque tout simplement fou sur Linux - et il semble que le livre est sur la programmation en langage d'assemblage sous Linux, et même écrit pour ainsi dire «au nom» de la communauté, et non pas des théoriciens, mais des praticiens fera au moins certains éditeurs d'intérêt. Mais tout s'est avéré "comme toujours". Plus de deux ans éditeurs ont publié leurs excuses habituelles, et plus tard ont commencé à quitter le livre, brièvement incidence sur la question, ou simplement "pour le débutant même." À la mémoire de l'ouvrage reste non écrite de cette proposition c Page d'éditeurs et le contenu (le site n'est pas répertorié nulle part ailleurs).

Le nouveau siècle a été marquée par le décès du prestataire et la mort d'une page. Comme je suis allé à Dragan'a, je ne me souviens pas ... Puis il a travaillé dans VALinux, et après avoir discuté les options, nous avons décidé d'ouvrir un projet sur sourceforge.net, et pour obtenir un domaine linuxassembly.org comme adresse principale. Dragan fait un graphisme simple mais tout à fait approprié pour la page, et l'hiver 2000, elle a ouvert une nouvelle adresse, est déjà fortement remanié. Malgré les LINUXassembly.org nom, j'ai essayé de rassembler toutes les informations possibles sur l'ensemble de tous les Unix, mais ne se limite pas à l'architecture x86. Dragan dès le départ promis d'écrire plusieurs articles sur IA-64, mais il ne l'a pas :-). Peu à peu, à partir de la phase de recherche du projet proposé dans une phase de l'appui et le renforcement des progrès. Dans cette forme, il existe aujourd'hui, et ce que vous pouvez regarder - "une lumière dans les ténèbres de bloatware".'

(Google Traduct du Russe:(!, part 1)

--

Milux

Messages : 2794
Date d'inscription : 30/08/2010

Revenir en haut Aller en bas

Re: Linux History - Asm

Message  Milux le Jeu 20 Jan - 7:32


C'est brièvement l'histoire de l'expansion Kazan. "

Appel à la «scène»

Compte tenu de l'apparente «bord» des sujets, cette page attire souvent toutes sortes de cambriolage amateur. Paradoxalement, ils ne peuvent souvent pas trouver l'information moi-même, même sur le site Web thématiques. Ceux d'entre eux qui sont capables de lire tout document de ce site Web, le lendemain était un autre chef que «comme un véritable programme sur ACME sur Unix» par hack3r CEWL. Vous pouvez facilement trouver un couple de dizaines d'articles similaires dans différentes langues. La source est en eux est visible à l'œil nu, et simplement regarder au moment de leur création. La cause de ces "tutorials" trivial - sa sortie (personnels ou de groupe), il augmente fortement la crédibilité de la documentation écrite. La chose principale - ne pas indiquer l'endroit où vous avez appris l'information, et tous croient que vous êtes véritable élite.

Le premier sur ma histoire amusante esprit avec la «scène» a eu lieu en 1999. Fait remarquable, le représentant n'était pas russe. Il a pris la liste des appels système, compilé par H-Peter Recktenwald, il suffit de remplacer son nom sur sa propre (et rien de plus, 20 octets!), Et publié comme le fruit de leurs nuits blanches. Heureusement, il a été possible d'expliquer le gars qui le font mal. Plus de telles histoires ne sont pas répétées.

L'intérêt pour la partie russe de la même "scène" à l'assembleur dans Unix est apparu après l'apparition d'un site sur linuxassembly.org (bien que les hackers russes avait noté dans asmutils presque depuis le début). Nous pacifique et constructive plutôt correspondu avec Red Plait sur les chargeurs et les bibliothèques ELF C :-). Un couple d'années, versé une nouvelle vague de "faire revivre la scène" - les étudiants, avec un enthousiasme tumultueux commencé à réinventer la roue. Messieurs, si vous connaissez le nom des Quantum / VLAD ou Silvia Cesare?

Ce que j'ai écris ça. A la base de toute science le principe du prêt. Vous prenez une boîte de l'information dont vous avez besoin, et en l'utilisant, de retour dans une boîte encore nouveau, avant que tu existais. Le principe est vrai pour toute science, appliquée ou fondamentale. En fait, ce principe de développement en tant que telle. GPL - c'est juste à ce sujet. Par conséquent, si vous considérez-vous comme un chercheur (en monnaie étrangère - un hacker), essayez de passer mon temps à explorer de nouvelles, puis de publier leurs projets. Si vous pensez avoir besoin quelque part pour faire quelque chose de mieux - juste le faire. Alors peut-être vous sera respectée que si elle est pour quoi. Tout le reste - c'est juste sorte de mettre un moderne «abstrait» dans l'institution et / ou l'utilisation de copier de la technologie-coller - à la fin il signifie simplement que vos désirs ne correspondent pas à vos capacités et vous perdez votre (et d'autres personnes) le temps et les nerfs . Le choix est vôtre.

(Part 2:)!)


--

De : http://asm.sourceforge.net/history-ru.html

La véritable historie des débuts de ASM sur Linux ELF et la naissance d'Open-BSD et de Free-BSD aussi soit dit en passant:)!

--

Milux

Messages : 2794
Date d'inscription : 30/08/2010

Revenir en haut Aller en bas

Re: Linux History - Asm

Message  Milux le Jeu 20 Jan - 7:43

Doc, appels et autre pré-versions de Linux 2.0 et 2.2 sont au :

http://asm.sourceforge.net/articles/startup.html

--

Et surtout de : http://asm.sourceforge.net/syscall.html

--

L'archeologie de la naissance du noyau, qu'n plus certains ont essayés de s'approprier:(!
Et je ne parle pas de SCO, mais de certains prétendus 'développeurs' peu honnêtes >> d'ou la naissance de la GPL, afin de les protéger:)!

--

Milux

Messages : 2794
Date d'inscription : 30/08/2010

Revenir en haut Aller en bas

Re: Linux History - Asm

Message  Milux le Jeu 20 Jan - 7:58

Un exemple de leur travail :

'2.3. Linux

System calls in Linux are done through int 0x80. (actually there's a kernel patch allowing system calls to be done via the syscall (sysenter) instruction on newer CPUs, but this thing is still experimental).

Linux differs from the usual UNIX calling convention, and features a "fastcall" convention for system calls (it resembles DOS). The system function number is passed in eax, and arguments are passed through registers, not the stack. There can be up to six arguments in ebx, ecx, edx, esi, edi, ebp consequently. If there are more arguments, they are simply passed though the structure as first argument. The result is returned in eax, and the stack is not touched at all.

System call function numbers are in sys/syscall.h, but actually in asm/unistd.h. Documentation on the actual system calls is in section 2 of the manual pages some documentation is in the 2nd section of manual (for example to find info on write system call, issue the command man 2 write).

There have been several attempts to write an up-to-date documentation of the Linux system calls, examine URLs in the References section below.

So, our Linux program will look like:

section .text
global _start ;must be declared for linker (ld)

_start: ;tell linker entry point

mov edx,len ;message length
mov ecx,msg ;message to write
mov ebx,1 ;file descriptor (stdout)
mov eax,4 ;system call number (sys_write)
int 0x80 ;call kernel

mov eax,1 ;system call number (sys_exit)
int 0x80 ;call kernel

section .data

msg db 'Hello, world!',0xa ;our dear string
len equ $ - msg ;length of our dear string
Kernel source references:

arch/i386/kernel/entry.S

include/asm-i386/unistd.h

include/linux/sys.h

2.4. FreeBSD

Note: most of this section should apply to other BSD systems (OpenBSD, NetBSD) as well, however the source references may be different.

FreeBSD has the more "usual" calling convention, where the syscall number is in eax, and the parameters are on the stack (the first argument is pushed last). A system call should be done performed through a function call to a function containing int 0x80 and ret, not just int 0x80 itself (kernel expects to find extra 4 bytes on the stack before int 0x80 is issued). The caller must clean up the stack after the call is complete. The result is returned as usual in eax.

There's an alternate way of using call 7:0 gate instead of int 0x80. The end-result is the same, but the call 7:0 method will increase the program size since you will also need to do an extra push eax before, and these two instructions occupy more bytes.

System call function numbers are listed in sys/syscall.h, and the documentation on the system calls is in section 2 of the man pages.

Ok, I think the source will explain this better:

section .text
global _start ;must be declared for linker (ld)

_syscall:
int 0x80 ;system call
ret

_start: ;tell linker entry point

push dword len ;message length
push dword msg ;message to write
push dword 1 ;file descriptor (stdout)
mov eax,0x4 ;system call number (sys_write)
call _syscall ;call kernel

;the alternate way to call kernel:
;push eax
;call 7:0

add esp,12 ;clean stack (3 arguments * 4)

push dword 0 ;exit code
mov eax,0x1 ;system call number (sys_exit)
call _syscall ;call kernel

;we do not return from sys_exit,
;there's no need to clean stack
section .data

msg db "Hello, world!",0xa ;our dear string
len equ $ - msg ;length of our dear string
Kernel source references:

i386/i386/exception.s

i386/i386/trap.c

sys/syscall.h

Smile!

--

Milux

Messages : 2794
Date d'inscription : 30/08/2010

Revenir en haut Aller en bas

Re: Linux History - Asm

Message  Milux le Jeu 20 Jan - 7:59

Je n'ai pris que la partie 'Linux' de leur somme, qui est au :

http://asm.sourceforge.net/intro/hello.html#AEN86

--

Milux

Messages : 2794
Date d'inscription : 30/08/2010

Revenir en haut Aller en bas

Re: Linux History - Asm

Message  Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum