Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Assembly Control Flow - Teapot
- https://en.wikibooks.org/wiki/X86_Assembly/Control_Flow
- Teapot's Git article on understanding lower level memory representations of C constructs
- https://gist.github.com/nicknapoli82/30f1c7b30e7b1561026d88655e5278f7
- There's some links within this one as well ^ this is the imp one
- https://youtu.be/cNN_tTXABUA
- How an ALU adds two numbers
- https://youtu.be/VBDoT8o4q00
- How negative numbers are represented in memory (2s complement + how to subtract 2 numbers) - Кинтана
- https://www.youtube.com/watch?v=4qH4unVtJkE
- From Sanath - Relation between assembly and binary
- https://softwareengineering.stackexchange.com/questions/227983/how-do-we-go-from-assembly-to-machine-codecode-generation
- From Teapot - A series that acts as the ultimate compendium on algorithms and walks you through creating a processor and its own instruction set
- https://en.m.wikipedia.org/wiki/The_Art_of_Computer_Programming
- From Sanath - A math heavy book that covers algorithms in detail
- https://www.amazon.com/Introduction-Algorithms-3rd-MIT-Press/dp/0262033844
- A course on building a game from scratch. No game engines nothing. Explains a lot of concepts from function pointers to cache management etc. - Teapot
- https://handmadehero.org/
- Here's some 1200 hours+ worth videos. Click the YT link to his channel.
- Here's the specific video on function pointers
- https://youtu.be/n4fI4eUTTKM
- And the one on cache management
- https://youtu.be/tk5P7mt2fAw
- A great series on learning assembly - Кинтана
- https://www.youtube.com/watch?v=oO8_2JJV0B4 (the channel also has a lot of other great videos)
- Reading content for learning assembly - Teapot
- In order to stick with something that sticks with general college ways of teaching, and is uniform with the cs50 ide I would recommend this as a good read for assembly.
- https://mirrors.sarata.com/non-gnu/pgubook/ProgrammingGroundUp-0-8.pdf
- https://drive.google.com/file/d/0B_JrB8vu6BIjcF9UV1lLamp4UHc/view?usp=sharing
- More mind bending but still worth the read
- The last one, but by far probably my favorite based on its simplicity and yet breadth of knowledge is this.
- http://learning.caitlinmorris.net/sfpc/CharlesPetzold_Code.pdf
- Highly recommended.
- Tip:
- Adding the -S flag when compiling with clang generates a readable assembly version of the executable.
- Ex: clang <filename.c> -o <output filename> -S
- Further. Clang performs optimizations on different levels. You can specify the level of optimization the compiler performs with the following flag: -O<level>
- -O0 no optimizations
- -O1 optimize favouring space over speed
- -O2 optimize favouring speed over space
- -O3 optimize favouring speed heavily
- -Ofast optimize favouring speed heavily and ignoring certain standards
- References
- Intel's software developer manual for various architectures
- https://software.intel.com/content/www/us/en/develop/articles/intel-sdm.html?iid=tech_vt_tech+64-32_manuals
- Table on processor throughput and latency per instruction per processor architecture
- https://gmplib.org/~tege/x86-timing.pdf
Add Comment
Please, Sign In to add comment