Learn with Us: C and Assembly Languages


Resources for Learning C and Assembly Languages
On this week’s Learn with Us, we’ve found a range of articles to help you learn C and assembly languages before moving on to other topics such as reverse engineering.
NOTE: you don’t necessarily need to spend too much time on this phase, usually about 6-7 hours will be enough to start moving on 😀
It’s easy to find resources to learn C:
- From popular websites such as SoloLearn (remember to check through the comments of each lesson!)
- To other interactive websites such as https://www.learn-c.org/
- Or even summaries such as https://learnxinyminutes.com/docs/c/
- If you prefer reading a book, The C Programming Language, 2nd edition by Brian Kernighan and Dennis Ritchie is often highly recommended by many
There are several ways of practicing C as well. You could use an online competitive platform like Codewars, or begin to write your own simple C programs and compile it into an executable that you can disassemble.
While learning C, it’s also good to keep in mind vulnerable functions such as strcpy(), gets(), etc., which will be relevant to you later if you’re getting into topics like reverse engineering.
As for assembly languages, you could start mainly with:
- x86 Assembly Language (32-bit CPU and Operating System):
- ▶️ Youtube Playlist: (Intro to x86 Assembly Language)
- ⭐ Online Tutorials:
- NASM x86 Assembly Language Tutorials: https://asmtutor.com/
- Crash Course in x86 Assembly: https://sensepost.com/blogstatic/2014/01/SensePost_crash_course_in_x86_assembly-.pdf
- Class Material for x86 Assembly: https://opensecuritytraining.info/IntroX86.html
- ▶️ Youtube Playlist: (Intro to x86 Assembly Language)
- x64 Assembly Language (64-bit CPU and Operating System):
- ▶️ Youtube Playlist: (Modern x64 Assembly)
- ⭐ Tutorial (Blog): https://github.com/0xAX/asm
- ▶️ Youtube Playlist: (Modern x64 Assembly)
- ARM Assembly Language:
For practicing assembly language, https://godbolt.org/ is a good website to use as an alternative to having to keep using gcc to compile your code into an executable and firing it up again and again with gdb during exploration 🙂
Hope this post gave you some ideas on how to kickstart your journey in embedded system programming with C and assembly languages! Some of the most useful resources may not appear to be the most visually-appealing and look a little outdated, but it would really help if you are able to stick with them long enough ✨
Have fun learning~
Responses