Good Assembly books, tutorials?

Good Assembly books, tutorials?
How good do you need to be with c to start assembly?
Knowledge of electronics required or would it help?

Other urls found in this thread:

youtube.com/playlist?list=PL-XXv-cvA_iDHtKXLFJbDG-i6L9oDr5X9
youtube.com/playlist?list=PLjzGSu1yGFjXSEIsOsaYfKl1xmPcji2f-
lxr.free-electrons.com/source/arch/x86/kernel/relocate_kernel_32.S).
twitter.com/SFWRedditVideos

also is it even a good idea to spend time on learning assembly?

CS 61C Spring 2014
youtube.com/playlist?list=PL-XXv-cvA_iDHtKXLFJbDG-i6L9oDr5X9
There's also an accompanying website.

Alternatively, Ray Seyfarth's ebooks. Or free ebook Reverse Eng for Beginners.

Other resources are often so ancient, and don't discuss important stuff like SIMD, AVX, and using the intrinsics.

If you are into programming compilers, OSes or really small microcontrollers.

Knowing assembly isn't all that useful, apart from informing how C and other languages work under the hood.

thank you dude, this means a lot

when would you need it in OS?

>this means a lot
No, it doesn't. Sure, any programmers worth their salt knows how to read assembly. But most programmers are average devs working in a Java shop. Knowing assembly doesn't help one bit.

would it be worth learning assembly just for that purpose?

Despite the meme "you're not smarter than compilers", often it's just wrong, and there are times writing inline assembly gives better predictable performance.
Any production OS would have some assembly in the code.

Julian Ilett seems knowledgeable.

youtube.com/playlist?list=PLjzGSu1yGFjXSEIsOsaYfKl1xmPcji2f-

do you work with assembly?

You don't need to know everything, just learn the basics of something RISCy and you'll learn plenty.

No, but I went to school.

free ebook Reverse Eng for Beginners book has 1060 pages
ill grow old : )

Any jobs that require assembly knowledge?

RISC for beginners?

RISC architectures make things simpler. There's a lot more busywork with load-stores but you don't need to learn a thousand kind of instructions.

Get IDA, write programs in c, reverse them in IDA until you understand the opcodes, then move on to reversing real programs in IDA. Start small and work your way up

Yes, any real security job will require it. Writing malware, reversing malware, vuln research, writing game cheats, weaponizing exploits all require assembly knowledge.
Kernel security team for Windows you have to know it

This is what the "Reverse Engineering for Beginners" book does.
I suggest skip the book, and just do it yourself, OP.

That's how I learned it, followed by writing functions in inline asm, followed by writing entire programs in asm.

Doing OS work, and even occasionally device drivers, will require a bit of assembly.

Embedded programming may include assembly, depending on how much infrastructure you do or don't have for whatever chip you're working with.

Assembly is a 1:1 translation to machine code. There are different architectures (register-based, stack-based, accumulator-based, etc.) but none of them are difficult to learn if you know basic programming. Probably the most valuable thing is knowing how C code might translate into assembly code, e.g. a while loop is really a conditional branch.

i want to learn it to be better at c

You only need to know the basics. Conditional branches, jump tables, bit shifts, manual stack management etc. is all very ASM

And just do it. Stop shitposting.

I only use assembly when I want to bypass registration of some program (binary patching) So knowing assembly is good for that

It's not so much that compilers are smarter it's really that compilers are generally smart enough that optimizing to that extent is rarely necessary. When you're working close to the hardware like an operating system kernel or device drivers it becomes necessary though.

What modern programs are even that easy to bypass? Or are you still using software from the mid-2000s?

Compilers can also do whole program optimizations, something humans realistically can't do

All the time, to be honest. Just look for any ".S" files in the linux kernel (e.g. lxr.free-electrons.com/source/arch/x86/kernel/relocate_kernel_32.S).

It's not just about optimization, it's that C alone does not give access to specific registers or hardware instructions that are needed to interact with hardware in the way the operating system has to.