ASM

How do I get into asm programming?
I did some bullshit asm at college but you know how it is. I know there's MASM and NASM and shitload of tutorials online how to set them up but when I do - what's next? What's possible? Where do I find basic and intermediate projects to do? I need some sources to get the hang of it all and I can't find anything solid.

To clear things up
I don't want any cert or to have a career based on that, I just want to do this as a hobby
I don't care if it's x86 or x64, although if I had to choose I'd pick x64

Attached: 1595044303572.jpg (800x547, 133.06K)

>thinking anyone here knows about ASM

cyberpunk af

Attached: 1655693126338[1].png (800x547, 1.18M)

>what's next?
getting gud at it. using knowledge of ASM to debug/hack/reverse-engineer compiled binaries
>What's possible?
anything
>x86 or x64
x64 is a superset of x86. learn both. the processor can run in either mode
read the AMD64 Architecture Programmer’s Manuals. get rodpilled. write an OS or reverse engineer a proprietary kernel module. go ham.

>not using FASM
Fren, I doubt your cut it.

I tried googling Flat Assembler but nothing really tells me WHY I should use flat assembler.

It said that FASM is an x86-64 assembler...
so why not just learn x86/x64 assembly instead?

gas is the best assembler

Attached: 1503755073483.jpg (736x602, 74.53K)

Assembly is a pain in the ass. You should try it, but after a few weeks you will come crawling back to C. After working with assembly C is pure bliss. Imagine not having to juggle registers all day and not have to decompose all your formulas into an obscure form of RPN.

i work with assembly code daily

x86 assembly is trash. learn x64 and never look back
masm is good and can be used in visual studio
download IDA Pro and the Hex-Rays decompiler plugin
write small C programs, disassemble them in IDA, browse the disassembly / decompilation, research things you do not understand

>no answer
I will no longer use your assembly language

>What's possible?
x86 and x64 are both turing complete, etc.

> After working with assembly C is pure bliss.
if it's x86/64 then yeah, having my testicles nailed to a piece of wood seems to be a far more attractive option than programming that god awful assembly language.

>download IDA Pro and the Hex-Rays decompiler plugin
greatest software.

As other user said, x64 is a superset of x86.
You actually need to use both sets of operations for quality x64 because x86 instructions don't need a REX prefix, so they are smaller and you can often save some space in the instruction cache.
This is usually pretty easy when the difference is often just naming schemes of the register arguments ( eax for 4 byte, rax for 8 byte)

>RPN
rax,rbx,mov

I don't know what you mean. I'm talking about the fact that you have to do the inner parts of the formula and then progressively go outward saving the intermediate values, deciding each time which values are more often used and need to be saved on registers vs those lesser used ones that you ran out of regs for and need to go on the stack.

That's not RPN.
Also,
> need to go on the stack.
You do realize that you can save these next to the algorithms with labels, right?
For single threaded work you barely have to touch the stack.
That is, of course, if you aren't using restrictive sectioning.
You don't have restrictive sections, do you user?

True it's not RPN but it's similar. My point is converting formulas to individual arithmetical steps is annoying.
>You do realize that you can save these next to the algorithms with labels, right?
How? I thought globals need to go on the .bss section.
>That is, of course, if you aren't using restrictive sectioning.
Never heard of it.

>My point is converting formulas to individual arithmetical steps is annoying.
it's not like you have a shortage of registers, stack or memory to deal with. much easier on modern chips. you just need to get good at translating your ideas into assembly. as soon as that hurdle is overcome you'll be wondering what the fuss was about.

I don't know man. I just don't like it after I actually tried it.
It's too verbose and requires too much thinking to do trivial stuff.
Maybe you're right and it's a matter of practice but I don't see the point when the compiler can generate faster code AND allows me to write portable programs.
If I really need assembly I can always use inline asm.

>It's too verbose and requires too much thinking to do trivial stuff.
welcome to the world of assembly programing. enjoy your stay. please set the carry flag when you leave.

>but I don't see the point when the compiler can generate faster code AND allows me to write portable programs.
you probably might see the point if you have to work on very limited CPUs that require timing accuracy or need to use minimal resources. c compilers have got extremely good over the years, but they still produce some bloat that an assembly programmer wouldn't need, or the programmer would have coded a more efficient routine than what a compiler decided was best.

>If I really need assembly I can always use inline asm.
absolutely.