Merci pour cette suite du langage assembleur, langage majeur et pourtant pourvu de très peu de cours de qualité.
@MuhammadAli-vt2sz2 жыл бұрын
Ohoho mais quelle surprise ! C'était très inattendu !
@_aquice2 жыл бұрын
Merci pour tes vidéos toujours aussi géniales et instructives, je cherchais justement une bonne formation de langage assembleur et je suis super bien tombé 🏆🏆🎖 Continue comme ça !! 🤩
@formation-video2 жыл бұрын
Merci, bon visionnage à toi 👋
@_aquice2 жыл бұрын
@@formation-video je vais revoir toute la playlist maintenant 😉
@PM-qt2jv2 жыл бұрын
tres bonnes explications sur ces fameuses convention d appel
@vianneyherve89622 жыл бұрын
excellente vidéo comme d'habitude, toujours un grand plaisir de suivre tes cours 😊!
@pablofv75222 жыл бұрын
Merci beaucoup cette vidéo !
@Soukouna42522 жыл бұрын
Vraiment merci beaucoup
@lanemouАй бұрын
Il y a une petite nuance je crois sur la convention d'appel sous Linux. Apparemment il faudrait différencier les fonctions standards des appels systèmes. La convention d'appel utilisée pour les appels systèmes est spécifique au noyau Linux (ce sont les syscall) et voilà l'ordre des arguments -> rdi, rsi, rdx, r10, r8, r9. La convention d'appel System V AMD64 ABI pour Linux que tu as montré c'est pour les fonctions standards qu'on appel avec call. -> rdi, rsi, rdx, rcx, r8, r9. Oui il y a que le 4ème argument qui change. Corrigez moi si je me trompe : )
@formation-videoАй бұрын
Oui, si on utilise plus de 3 arguments, il y a bien une distinction pour le 4e argument, entre les appels système et les fonctions de l'utilisateur 👍
@thecrazzxz33832 жыл бұрын
Depuis le temps qu'on l'attendais
@MuhammadAli-fg2bw2 жыл бұрын
Excellente la vidéo, si j'ai bien compris, la fonction cherche ses arguments dans les registres rcx, rdx... (et la pile bien sur). C'est pour toute les fontions du language Assembleur ou juste ceux de l'API windows ?
@formation-video2 жыл бұрын
Les conventions dépendent ET du système, ET du compilateur utilisé, ET de la méthode de convention employée. Donc, cela ne s'applique pas qu'aux fonctions de Windows, puisque j'ai montré des exemples de convention aussi pour GNU/Linux
@MuhammadAli-fg2bw2 жыл бұрын
@@formation-video D'accord, mais je faisais plus allusion aux fonction qu'on fera plus tard dans le cours, devra t-on mettre des parenthèses ? Ou faire la même chose avec cx, dx, r8.... ? Merci !
@formation-video2 жыл бұрын
Non, il n'y aura pas de parenthèses comme dans un langage plus haut niveau comme C ou Java
@alfafaalfa51322 жыл бұрын
Merci pour la vidéo ! Continue comme ça
@ayrton98082 жыл бұрын
Pourquoi est-ce que tu alloues 32 octets puis tu rajoute 8 octets ? Et pourquoi tu prends un espace de 8 octets sur la pile ? Dans la doc ils précisent pas l'espace à alloué, ils disent juste qu'il faut alloué un espace
@formation-video2 жыл бұрын
Ah, je n'ai peut-être pas pensé à détailler assez pour le "8", alors précisément, la convention Windows x64 exige que : - soient alloués 32 octets pour cet "espace fantôme" - que la pile soit alignée sur des multiples de 16 octets, or ici elle est en réalité alignée à 32 + 8 (pour l'adresse de retour), ce qui donne 40, qui n'est pas multiple de 16. Donc, on rajoute 8 pour arriver à 48, qui l'est. J'aurais d'ailleurs très bien pu faire les deux instructions (sub rsp, 32 et sub rsp, 8) en une seule (sub rsp, 40). Nous verrons bien d'autres utilisations de fonctions pour que cela soit montré de nouveau en vidéo 😉
@ayrton98082 жыл бұрын
Merci de l'explication
@formation-video2 жыл бұрын
Je t'en prie
@thecrazzxz33832 жыл бұрын
Est-ce que du coup allouer des bytes : sub rsp Correspond à : push push Etc...
@formation-video2 жыл бұрын
Oui et non, on a simplement des instructions pas compatibles sur 64 bits (push) donc on passe par sub rsp. Aussi, il y a une différence avec l'altération ou non des registres d'état, mais sans importance dans ce cas précis. Donc, push en 32 bits et sub rsp en 64 bits 👍
@thecrazzxz33832 жыл бұрын
@@formation-video ok merci du coup on peut utiliser sub esp, ... en 32 bits ?
@formation-video2 жыл бұрын
Oui, mais pour les appels, il vaut mieux respecter les conventions
@thecrazzxz33832 жыл бұрын
@@formation-video ok
@real_arsium2 жыл бұрын
Pourquoi on réserve (pour Vectorcall) 32 octets puis 8 sur la pile ? sub rsp, 32 //ok on réserve 32 octets mais pourquoi ? sub rsp, 8 //ok on réserve 8 octets mais pourquoi ? ... add rsp, 40 //on restore la pile avant de quitter Egalement il y a aussi le fastcall et le cdecl call (vs stdcall) ainsi que les instructions prologues et épilogues non abordées. Sinon bonne vidéo
@formation-video2 жыл бұрын
J'ai répondu à la question du "pourquoi sub rsp, 8" dans un autre commentaire (celui de Ayrton). Et oui, les prologues/épilogues n'ont pas encore été abordées, mais on le verra plus tard, c'est bien prévu 😉
@real_arsium2 жыл бұрын
@@formation-video Ok ok ça marche merci (et encore la qualité de la vidéo est incroyable) (j'ai un peu de mal avec push ESP, mov EBP, ESP je ne les comprends pas trop)
@formation-video2 жыл бұрын
On aura l'occasion d'en parler 👍
@thecrazzxz33832 жыл бұрын
T'as un boulot à part youtube ?
@formation-video2 жыл бұрын
Cela fait partie de mon travail, avec le streaming sur Twitch et la gestion de la communauté francophone d'un MMORPG : jasonchampagne.fr/travail
@tankouguebenedo55562 жыл бұрын
Salut merci pour ces super formations. Avez vous une page Facebook?
@formation-video2 жыл бұрын
Bonsoir, oui tout est disponible ici : jasonchampagne.fr
@christophemaury97804 ай бұрын
Sur FreeBSD, man 2 syscall, et numéro des fonctions dans /usr/include/sys/sycall.h
@adriencuisse96412 жыл бұрын
cat /usr/include/unistd.h | grep include unistd.h c'est le tronc commun il me semble, pour les numéros d'appels c'est spécifique et c'est inclus vers unistd, (dossier bits ?) sinon cd /usr/include; grep -R define | grep WRITE
@formation-video2 жыл бұрын
Pour certains, dans les sources des entêtes Linux aussi 👍