Assembleur #4 - conventions d'appel

  Рет қаралды 11,767

FormationVideo

FormationVideo

Күн бұрын

Пікірлер: 37
@guillaumed9685
@guillaumed9685 2 жыл бұрын
Merci pour cette suite du langage assembleur, langage majeur et pourtant pourvu de très peu de cours de qualité.
@MuhammadAli-vt2sz
@MuhammadAli-vt2sz 2 жыл бұрын
Ohoho mais quelle surprise ! C'était très inattendu !
@_aquice
@_aquice 2 жыл бұрын
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-video
@formation-video 2 жыл бұрын
Merci, bon visionnage à toi 👋
@_aquice
@_aquice 2 жыл бұрын
@@formation-video je vais revoir toute la playlist maintenant 😉
@PM-qt2jv
@PM-qt2jv 2 жыл бұрын
tres bonnes explications sur ces fameuses convention d appel
@vianneyherve8962
@vianneyherve8962 2 жыл бұрын
excellente vidéo comme d'habitude, toujours un grand plaisir de suivre tes cours 😊!
@pablofv7522
@pablofv7522 2 жыл бұрын
Merci beaucoup cette vidéo !
@Soukouna4252
@Soukouna4252 2 жыл бұрын
Vraiment merci beaucoup
@lanemou
@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
@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 👍
@thecrazzxz3383
@thecrazzxz3383 2 жыл бұрын
Depuis le temps qu'on l'attendais
@MuhammadAli-fg2bw
@MuhammadAli-fg2bw 2 жыл бұрын
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-video
@formation-video 2 жыл бұрын
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-fg2bw
@MuhammadAli-fg2bw 2 жыл бұрын
@@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-video
@formation-video 2 жыл бұрын
Non, il n'y aura pas de parenthèses comme dans un langage plus haut niveau comme C ou Java
@alfafaalfa5132
@alfafaalfa5132 2 жыл бұрын
Merci pour la vidéo ! Continue comme ça
@ayrton9808
@ayrton9808 2 жыл бұрын
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-video
@formation-video 2 жыл бұрын
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 😉
@ayrton9808
@ayrton9808 2 жыл бұрын
Merci de l'explication
@formation-video
@formation-video 2 жыл бұрын
Je t'en prie
@thecrazzxz3383
@thecrazzxz3383 2 жыл бұрын
Est-ce que du coup allouer des bytes : sub rsp Correspond à : push push Etc...
@formation-video
@formation-video 2 жыл бұрын
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 👍
@thecrazzxz3383
@thecrazzxz3383 2 жыл бұрын
@@formation-video ok merci du coup on peut utiliser sub esp, ... en 32 bits ?
@formation-video
@formation-video 2 жыл бұрын
Oui, mais pour les appels, il vaut mieux respecter les conventions
@thecrazzxz3383
@thecrazzxz3383 2 жыл бұрын
@@formation-video ok
@real_arsium
@real_arsium 2 жыл бұрын
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-video
@formation-video 2 жыл бұрын
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_arsium
@real_arsium 2 жыл бұрын
@@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-video
@formation-video 2 жыл бұрын
On aura l'occasion d'en parler 👍
@thecrazzxz3383
@thecrazzxz3383 2 жыл бұрын
T'as un boulot à part youtube ?
@formation-video
@formation-video 2 жыл бұрын
Cela fait partie de mon travail, avec le streaming sur Twitch et la gestion de la communauté francophone d'un MMORPG : jasonchampagne.fr/travail
@tankouguebenedo5556
@tankouguebenedo5556 2 жыл бұрын
Salut merci pour ces super formations. Avez vous une page Facebook?
@formation-video
@formation-video 2 жыл бұрын
Bonsoir, oui tout est disponible ici : jasonchampagne.fr
@christophemaury9780
@christophemaury9780 4 ай бұрын
Sur FreeBSD, man 2 syscall, et numéro des fonctions dans /usr/include/sys/sycall.h
@adriencuisse9641
@adriencuisse9641 2 жыл бұрын
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-video
@formation-video 2 жыл бұрын
Pour certains, dans les sources des entêtes Linux aussi 👍
Assembleur #5 - variables
25:36
FormationVidéo
Рет қаралды 9 М.
Assembleur #10 - fonctions (1/2)
1:10:17
FormationVidéo
Рет қаралды 2,6 М.
IL'HAN - Qalqam | Official Music Video
03:17
Ilhan Ihsanov
Рет қаралды 700 М.
Quando A Diferença De Altura É Muito Grande 😲😂
00:12
Mari Maria
Рет қаралды 45 МЛН
x86 Assembly: Hello World!
14:33
John Hammond
Рет қаралды 1,4 МЛН
Architecture - processeur
1:44:57
FormationVidéo
Рет қаралды 75 М.
Penelope : on remplace pwncat-cs 🧟‍♀️
10:43
OlivierProTips
Рет қаралды 284
Architecture - registres
59:30
FormationVidéo
Рет қаралды 27 М.
Ce truc ? La plus grande prouesse informatique
15:11
overfl0w
Рет қаралды 144 М.
screw it... let's recode Windows from scratch
23:41
V2F
Рет қаралды 704 М.
Kadyrov Went Against Putin? / Poland Declares War on Russia
11:17
Prototype PCBs faster than 3D Prints
14:04
Stephen Hawes
Рет қаралды 195 М.
I Redesigned the ENTIRE YouTube UI from Scratch
19:10
Juxtopposed
Рет қаралды 1 МЛН