Pushing registers that you are going to use internally to stack at the beginning of function is necessary if you are going to use the function as a library. Pushing registers and then popping them back makes sure registers are at the left untouched when you return from your function, thus not corrupting the flow of the original program.
That’s true, but in a previous video Kay explained that the ARM convention is that a function only has to preserve certain registers, i.e. X19-X28. The others are temporary registers; it’s up to the caller to save any that are needed before making a function call. I’m not sure which part of the video you’re referring to, but maybe this will help. Consider also that the “functions” here are really just subroutines meant for use only in this program, not library functions.
Just for future reference no one wants an unsolicited teacher. If you just can’t help yourself go start your own youtube channel so you can say “well actually” to your own audience.
@@EnlightenedSavageof course anyone can say any word however they want, but anyone who uses SIMD with any degree of regularity tend to say it a certain way :)
@@coding3438The problem is they're not just trolls. They're trying to be some kind of white knight, for literally all the wrong reasons. Their comments interrupt otherwise civil discussion. It would be great if there were a way to hide comments that don't otherwise contribute to the discussion around the video. Y'know, like the one I'm writing now.
9:29 That line count is correct because in posix, a line is a character string that ends in a newline character. That is just one line then some extra characters on the end.
if you look at generated assembly from GCC and CLang a lot of generated labels start with .L. when a label is prefixed with .L it signals to the assembler that it should not emit a symbol for the label, and it remains hidden--it cannot be used as an external reference in any other TU. it's very handy when you don't want to clutter the symbol space with symbols that nothing else will need to know about!
Thanks! For the diagrams this time I gave tldraw.com a try - with a fair bit of editing laid over the top. Tldraw is really nice. The rest is VS Code + OBS with a lot of me fiddling around putting emojis in using Premiere Pro :)
A few decades ago it was the the norm to write any application in assembly due to hardware & compiler limitation, fortunately we are past that point. That said, there some cases where assembly understanding is still necessary, e.g reverse engineering.
Interesting question! If you've not watched my "Introducing 0DE5" and "Just enough assembly to blow your mind" videos yet I think I touch on it a bit there. I'm not aware of any good resources talking about why it's useful to learn but I'll give a brief on why I'm covering it / why it's useful to me. So I'm covering it due to the spirit of my project - odes in appreciation of computing. Basically I think it's interesting and that other people might find it interesting! Not everyone will I imagine but to me learning the language that ~all of the programs on my computer boil down to is pretty fascinating. As to why I think it's useful - I started learning assembly as a teenager and it has been very helpful in helping me build a coherent, generally correct mental model of how all computer programs work - because ~all computer programs boil down to how to just this language works. So a bit like (I imagine) if you learn physics you won't necessarily understand both civil engineering and spaceflight right away, but you'll know you have the raw tools in your brain necessary to understand those things - your intuition will generally be good. I think assembly has, for me, been a bit like 'physics' for the computer. I don't necessarily understand how the Rust borrow checker works or Scheme continuations but I do know that they all come down to one language in the end and knowing roughly how that language works helps me guess at how those ideas might work a lot faster. This answer is also reminding me of a little essay called The Gears of My Childhood which is a bit of a tangent but similar idea: www.herostrat.us/posts/the-gears-of-my-childhood/ Anyway, thanks for the question! Made me think. Hope the answer wasn't too long :)
@@neoeno4242Very good reasoning. I am glad that not everyone imagine every computing Ops with combinational logic of Bi-stable gates & circuitry 😆, otherwise things can become really COMP-licated. 👍🏻 Good work on your educational video btw.
If you get bored try to find “Zen of Graphics Programming by Michael Abrash” creating sprites,shapes and graphics in msdos with assembly and VGA hardware is pure magic. Does it translate into todays hardware or coding regiments, no probably not but the windows API takes the fun out of programming. And it is a PITA
Agreed this is the first time I've seen a state machine explained as a thing that can be in one of many states and we just do something upon changing states.
Love the assembly videos, please keep them coming! Thank you!!
I'm super excited I've found your channel. Fascinating content, thank you for sharing the knowledge!
Any day with a video from Kay is a good day 💜
Pushing registers that you are going to use internally to stack at the beginning of function is necessary if you are going to use the function as a library. Pushing registers and then popping them back makes sure registers are at the left untouched when you return from your function, thus not corrupting the flow of the original program.
That’s true, but in a previous video Kay explained that the ARM convention is that a function only has to preserve certain registers, i.e. X19-X28. The others are temporary registers; it’s up to the caller to save any that are needed before making a function call. I’m not sure which part of the video you’re referring to, but maybe this will help. Consider also that the “functions” here are really just subroutines meant for use only in this program, not library functions.
Love this! Assember is the WAY!
Kay, once again a beautiful and interesting video! Just for future reference, "SIMD" is typically verbalized as the two-syllable "SIM-DEE" :)
Or she can say it like she wants
Just for future reference no one wants an unsolicited teacher. If you just can’t help yourself go start your own youtube channel so you can say “well actually” to your own audience.
@@EnlightenedSavageof course anyone can say any word however they want, but anyone who uses SIMD with any degree of regularity tend to say it a certain way :)
@@declanmooretake it easy bro. These people are trolls
@@coding3438The problem is they're not just trolls. They're trying to be some kind of white knight, for literally all the wrong reasons. Their comments interrupt otherwise civil discussion. It would be great if there were a way to hide comments that don't otherwise contribute to the discussion around the video. Y'know, like the one I'm writing now.
I love eli's work! It's great seeing it recognized :]
Fantastic, thanks for a great video. Super clear presentation and explanations!
You're doing so great, thanks for doing this. ❤
What a fuckin awesome channel this is.
9:29 That line count is correct because in posix, a line is a character string that ends in a newline character. That is just one line then some extra characters on the end.
I never thought I'd click with Assembly and yet here I am following through. Thanks for putting these out!
the quick greek lesson for alusis sent me to another rabbit hole 😂😂
Congrats on lifting! Love lifting!
Kay you're so awesome!
I'm loving your videos
Kay Lack? More like Kay, uh, Surplus. Of good content.
Will you provide a course on x64?
thanks! good stuff
Great! Thanks
20:13 i think i've heard people say "sim-dee" which is a pretty good compromise on mouthfeel vs brevity imo
Thank You
Ah, the book of Eli.
Ample silicon, the mark of nobility.
Loving the content
sehr gut
if you look at generated assembly from GCC and CLang a lot of generated labels start with .L. when a label is prefixed with .L it signals to the assembler that it should not emit a symbol for the label, and it remains hidden--it cannot be used as an external reference in any other TU. it's very handy when you don't want to clutter the symbol space with symbols that nothing else will need to know about!
note that this applies only to ELF targets!
Ahh interesting - great comment. Seems like 'privacy' is a concept baked even more deeply into programming than I initially expected...
even the low-level programmer wants encapsulation :)
@@channelgogrvk Is the .L prefix used for the same purpose as global variables defined with the static keyword?
Love it. Which software do you use for the presentation
Thanks! For the diagrams this time I gave tldraw.com a try - with a fair bit of editing laid over the top. Tldraw is really nice. The rest is VS Code + OBS with a lot of me fiddling around putting emojis in using Premiere Pro :)
As Niklaus Wirth stated, programs are literature for humans, and not machines.
However, Assembly is a departure from that ideal...
A few decades ago it was the the norm to write any application in assembly due to hardware & compiler limitation, fortunately we are past that point. That said, there some cases where assembly understanding is still necessary, e.g reverse engineering.
Kay, is there a resource that would help me understand the relationships of how and why assembly is useful to comprehend?
Interesting question! If you've not watched my "Introducing 0DE5" and "Just enough assembly to blow your mind" videos yet I think I touch on it a bit there. I'm not aware of any good resources talking about why it's useful to learn but I'll give a brief on why I'm covering it / why it's useful to me.
So I'm covering it due to the spirit of my project - odes in appreciation of computing. Basically I think it's interesting and that other people might find it interesting! Not everyone will I imagine but to me learning the language that ~all of the programs on my computer boil down to is pretty fascinating.
As to why I think it's useful - I started learning assembly as a teenager and it has been very helpful in helping me build a coherent, generally correct mental model of how all computer programs work - because ~all computer programs boil down to how to just this language works. So a bit like (I imagine) if you learn physics you won't necessarily understand both civil engineering and spaceflight right away, but you'll know you have the raw tools in your brain necessary to understand those things - your intuition will generally be good.
I think assembly has, for me, been a bit like 'physics' for the computer. I don't necessarily understand how the Rust borrow checker works or Scheme continuations but I do know that they all come down to one language in the end and knowing roughly how that language works helps me guess at how those ideas might work a lot faster.
This answer is also reminding me of a little essay called The Gears of My Childhood which is a bit of a tangent but similar idea: www.herostrat.us/posts/the-gears-of-my-childhood/
Anyway, thanks for the question! Made me think. Hope the answer wasn't too long :)
@@neoeno4242Very good reasoning. I am glad that not everyone imagine every computing Ops with combinational logic of Bi-stable gates & circuitry 😆, otherwise things can become really COMP-licated. 👍🏻 Good work on your educational video btw.
If you get bored try to find “Zen of Graphics Programming by Michael Abrash” creating sprites,shapes and graphics in msdos with assembly and VGA hardware is pure magic. Does it translate into todays hardware or coding regiments, no probably not but the windows API takes the fun out of programming. And it is a PITA
Slightly odd question if you mind me asking - but what’s that nice handwritten-looking font on the diagrams?
I believe it's Shantell Sans (shantellsans.com) - the friendly default font on tldraw
Thank you very much 😊👍
the software community is healing
Love it!!!!!!!!!!
One small suggestion, pump up the font some are watching at 360p (code & terminal)
Thanks for the feedback - always a bit of a battle between font size and screen real estate so useful to know when the balance isn't quite right 👍
great video
hello 👋
Hi! 👋
I’ve heard it called ‘sim’ ‘dee’
i cant believe this shit is free
now do it in machine code
Coming soon :)
State machines are not used and explained enough!
Agreed this is the first time I've seen a state machine explained as a thing that can be in one of many states and we just do something upon changing states.
My brain hurts. Is it normal?
If it hurts it means it's growing - that's good
@@strawberry_blush81is this true.. I feel this anytime I’m learning anything complex.. like a migraine
Your migraine is probably due lack of sleep. 🙈 Your brain begin to protest whenever it comes across (slightly) complex subject.
1st comment :)
1st reply to a comment! :))
2nd reply to a comment!!! :)))
🥇
Sorry to ask but What are your pronouns?
All good - she/her :)
@@neoeno4242 cutie brit
I commented too
3rd comment ❤
2st comment :)
Hard for me to follow