This was one of the most thoughtful, well prepared videos on assembly I have ever seen. You have a real knack for explaining this content visually. Thank you!
Thank you very much for this. I watched 2-3 videos prior to this one, but yours made it click. Especially because you gave multiple analogies (the deck of cards one being my favorite) to explain the same thing - this approach really makes a person understand the topic by having to think about what all the analogies have in common.
it's good to mention that this could vary depending on what calling convention (__stdcall, __cdecl, __fastcall) and CPU architecture (x86, x64) you are using
I just want to say to people who don't get why SP changes : Every push and pop is implicitely modifiying SP, the person writing instruction doesn't need to manage it in this case.
hola amigo soy hispano hablante, gracias por tu video me sirvio un montón, me podes decir porfavor que emulador, o que usas para ejecutar el codigo ensamblador?
what happen if we push another register in to stack when program executing the call function , at that point stack pop out that we push into the stack to EIP register ? if it does what happen to program executing instruction ?
Call macro already pushes return address for you. If you push another address before call macro. It will execute it arg1 and stack will corrupt. If you want to push custom address for return,you must do push return address then jmp function location. This is which is equal to a call macro. But keep in mind there is a high change custom return address will crash program. You need to adjust that.
Assembly language will vary from CPU to CPU. Not all CPUs even have a stack, therefore no useless opcodes for a stack are needed. i have been a mainframe assembly programmer for over 50 years and NEVER found the need for a silly stack. In fact mainframes never had or needed one. The intel platform is very limited to amount and usage of resisters not to mention a slew of special purpose registers and all the op codes needed to tickle these registers, The mainframe uses 16 general purpose registers since the 1960s. Use any register for math, pointers, etc.
This was one of the most thoughtful, well prepared videos on assembly I have ever seen. You have a real knack for explaining this content visually. Thank you!
Thank you very much for this. I watched 2-3 videos prior to this one, but yours made it click. Especially because you gave multiple analogies (the deck of cards one being my favorite) to explain the same thing - this approach really makes a person understand the topic by having to think about what all the analogies have in common.
Great video !!! Indeed there aren't other videos that explain the concept well enough, that's why I thank you a lot!! :)
This was hurting my brain yesterday but you made it click! Thanks! :)
I’m glad! Can’t tell you how much time I spent banging my head against the desk before it clicked for me
thank you, It was very hard to find a video that actually explains this correctly.
The best vdo. U explained so simply and easlily. I was looking for this for months 😅
it's good to mention that this could vary depending on what calling convention (__stdcall, __cdecl, __fastcall) and CPU architecture (x86, x64) you are using
I just want to say to people who don't get why SP changes : Every push and pop is implicitely modifiying SP, the person writing instruction doesn't need to manage it in this case.
I went to a few videos, they sucked, went to copilot, it explained it nicely... but sucked, yours is good
Thanks! It's my only instructional video and only made it because I too couldn't find it anywhere else. Glad it was useful!
omg no other video I found explained it well like him
Best explanation ever!
hola amigo soy hispano hablante, gracias por tu video me sirvio un montón, me podes decir porfavor que emulador, o que usas para ejecutar el codigo ensamblador?
Well done. Excellent explanation
Yes this definitely helped visualize. Thanks
What were the ESP and EBP doing through all of this?
This was a good video thank you. Do you have have any videos on what the EBP does? Thanks
thank you so much! although at first i kinda had a headache but rb i understand
Great video, wish you went into recursion
when you pop, does the value goes to eip by default
Why is 406F on 19 in the stack
Thanks a lot mate!
Very well explained thank you
Very useful and detailed thanks !
well done dude!
what happen if we push another register in to stack when program executing the call function , at that point stack pop out that we push into the stack to EIP register ? if it does what happen to program executing instruction ?
Call macro already pushes return address for you. If you push another address before call macro. It will execute it arg1 and stack will corrupt. If you want to push custom address for return,you must do push return address then jmp function location. This is which is equal to a call macro. But keep in mind there is a high change custom return address will crash program. You need to adjust that.
I wish you made more videos
I wish I stuck with low level programming! Started doing detection development instead. Now I make videos at www.youtube.com/@DailyDecrypt
educational, although I was looking for EBP basics.
What any amazing video thanks!
Strong Vid, Bro!
Very useful thanks !
wow nice explanation
great !!
Assembly language will vary from CPU to CPU. Not all CPUs even have a stack, therefore no useless opcodes for a stack are needed. i have been a mainframe assembly programmer for over 50 years and NEVER found the need for a silly stack. In fact mainframes never had or needed one. The intel platform is very limited to amount and usage of resisters not to mention a slew of special purpose registers and all the op codes needed to tickle these registers, The mainframe uses 16 general purpose registers since the 1960s. Use any register for math, pointers, etc.
What does add/sub esp, hexValue do?
convert the hex value to decimal value then subtract (sub) that decimal value from esp or add that decimal value to esp.
Same boat as you, mate! But this helped!
Thanks a lot!
thanks alot man
very useful
So basically assembly stack is not far from what you can see in the debugger of any other language (java, C#, python, js). What a surprise!!!
Thank you so much man you save my ass!