TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Ask HN: What's the best resource for learning modern x64 assembly?

492 pointsby ssklashover 5 years ago
I've found lots of resources for x86, but considerably less for x64. Pentester Academy has a promising course on it, along with shellcoding, but I'm not sure what else is out there.

43 comments

jngover 5 years ago
If you basically don&#x27;t know how to code in assembly, learn 16-bit x86 with whichever method you find, it won&#x27;t be wasted. You can extend most of the knowledge from 16 to 32 bit substituting register names ax,bx,cx,dx,si,di,bp,sp y eax,ebx,ecx,edx,esi,edi,ebp,esp. You can extend that to 64 bit with rax,rbx,rcx,rdx,rsi,rdi,rbp,rsp. Learning 16-bit x86 will have you learn about segment registers, but it isn&#x27;t wasted either, protected mode consists of quite a lot of complications on segment registers, virtual memory addresses (which you can mostly ignore as an applications programmer as compared to a kernel or driver programmer), and interruptions.<p>I wrote a book to learn x86 programming and it was published in 1994 back before &quot;real digital age&quot;, oriented to be the best didactical text possible (I had to learn the hard way, I wrote what I would have had to read 10 years earlier). Over 20 reprints, recommended in all Spanish-speaking universities (yeah, I know, if I had known then what I know now I&#x27;d have done it in English). It was discontinued 10 years ago or so, they asked me to revise it for the modern world, and it didn&#x27;t really make sense: rewriting it for what assembly language is and is used for in today&#x27;s world would be a ton of work because it&#x27;s a qualitative difference, and if I added an extra chapter explaining 32-bit and 64-bit changes and letting the publisher stamp a &quot;2010 edition&quot; logo on the cover would just be scamming people, which I don&#x27;t want to do. Here is the link to a scanned copy of the original: <a href="https:&#x2F;&#x2F;www.dropbox.com&#x2F;s&#x2F;sz6rinfhyc8sai6&#x2F;Lenguaje%20Ensamblador%20de%20los%2080x06%20-%20Jon%20Beltr%C3%A1n%20de%20Heredia.pdf?dl=0" rel="nofollow">https:&#x2F;&#x2F;www.dropbox.com&#x2F;s&#x2F;sz6rinfhyc8sai6&#x2F;Lenguaje%20Ensambl...</a> . Could prove useful if you can speak Spanish.<p>Honestly: I learned Z80 assembly first, in the 80s, and then switched to x86 very easily. Learn whatever assembly language first, what&#x27;s hard is learning about registers, flags, memory... and if you learn it will, then you can switch to another architecture quite easily.
评论 #22280937 未加载
评论 #22280783 未加载
评论 #22280898 未加载
评论 #22281074 未加载
评论 #22280843 未加载
评论 #22282351 未加载
anonsivalley652over 5 years ago
There&#x27;s no magic anywhere and 99.1% of it is documented.<p>IA-32e&#x2F;AMD64 is basically an extension of IA-32&#x2F;x86. What you&#x27;re looking for is to understand the difference between real mode, 386 protected mode, PAE, paging and long mode because the registers, instructions, addressing and sizes of structures differ.<p>You can learn all of this by reading the Intel software manuals and digging into it yourself.<p>Tools you need (for non-Windows):<p>- gdb&#x2F;lldb<p>- assemblers: yasm, nasm, binutils (contains &quot;as&quot;)<p>Optional tools:<p>- IDA Pro<p>- Virtualization&#x2F;emulation such as VMware Fusion&#x2F;Workstation (because it supports being a gdbserver), VirtualBox or QEMU<p>- Intel&#x27;s CPUID app<p>You also need good references like:<p>- the Intel manual set (a giant PDF or a collection of several) <a href="https:&#x2F;&#x2F;software.intel.com&#x2F;en-us&#x2F;articles&#x2F;intel-sdm" rel="nofollow">https:&#x2F;&#x2F;software.intel.com&#x2F;en-us&#x2F;articles&#x2F;intel-sdm</a><p>- <a href="https:&#x2F;&#x2F;sandpile.org" rel="nofollow">https:&#x2F;&#x2F;sandpile.org</a> (fairly current)<p>- <a href="https:&#x2F;&#x2F;ref.x86asm.net" rel="nofollow">https:&#x2F;&#x2F;ref.x86asm.net</a> (outdated by useful)<p>Another helpful exercise is writing a toy operating system in Rust or only assembly. <a href="https:&#x2F;&#x2F;osdev.org" rel="nofollow">https:&#x2F;&#x2F;osdev.org</a> has many resources and guides.
评论 #22279952 未加载
评论 #22280184 未加载
评论 #22280789 未加载
rramadassover 5 years ago
Assuming you are interested in learning not just Assembly but how to use it in conjunction with a high-level language (almost always C&#x2F;C++);<p>Background:<p>--- Matt Pietrek&#x27;s &quot;Just Enough Assembly Language to Get By&quot; - <a href="http:&#x2F;&#x2F;bytepointer.com&#x2F;resources&#x2F;pietrek_asm_pt1.htm" rel="nofollow">http:&#x2F;&#x2F;bytepointer.com&#x2F;resources&#x2F;pietrek_asm_pt1.htm</a><p>--- Hongjiu Lu &quot;ELF: From The Programmer&#x27;s Perspective&quot; - <a href="http:&#x2F;&#x2F;beefchunk.com&#x2F;documentation&#x2F;sys-programming&#x2F;binary_formats&#x2F;elf&#x2F;elf_from_the_programmers_perspective&#x2F;elf.html" rel="nofollow">http:&#x2F;&#x2F;beefchunk.com&#x2F;documentation&#x2F;sys-programming&#x2F;binary_fo...</a><p>Books:<p>--- Computer Systems: A Programmer&#x27;s Perspective (3rd Edition) by Bryant &amp; O&#x27;Hallaron - <a href="https:&#x2F;&#x2F;www.amazon.com&#x2F;Computer-Systems-Programmers-Perspective-3rd&#x2F;dp&#x2F;013409266X&#x2F;ref=sr_1_1?crid=26HEH06VOP2XL&amp;keywords=computer+systems+a+programmer%27s+perspective+3rd+edition&amp;qid=1581230329&amp;s=books&amp;sprefix=computer+ssytems%2Cstripbooks-intl-ship%2C515&amp;sr=1-1" rel="nofollow">https:&#x2F;&#x2F;www.amazon.com&#x2F;Computer-Systems-Programmers-Perspect...</a><p>--- Modern X86 Assembly Language Programming by Daniel Kusswurm - <a href="https:&#x2F;&#x2F;www.amazon.com&#x2F;Modern-X86-Assembly-Language-Programming&#x2F;dp&#x2F;1484240626&#x2F;ref=sr_1_1?keywords=modern+x86&amp;qid=1581228086&amp;s=books&amp;sr=1-1" rel="nofollow">https:&#x2F;&#x2F;www.amazon.com&#x2F;Modern-X86-Assembly-Language-Programm...</a><p>--- Low-Level Programming by Igor Zhirkov - <a href="https:&#x2F;&#x2F;www.amazon.com&#x2F;Low-Level-Programming-Assembly-Execution-Architecture&#x2F;dp&#x2F;1484224027&#x2F;ref=sr_1_1?crid=Y2MOWSFXW7TL&amp;keywords=low-level+programming&amp;qid=1581229802&amp;s=books&amp;sprefix=Low-level+progr%2Cstripbooks-intl-ship%2C512&amp;sr=1-1" rel="nofollow">https:&#x2F;&#x2F;www.amazon.com&#x2F;Low-Level-Programming-Assembly-Execut...</a>
blendergeekover 5 years ago
Here is a book on computer architecture that has a good section on x86-64 assembly language. Please note that I have edited this comment to reflect a change suggested by a cold comment. This book (the third edition) introduces x86-64 assembly very well.<p><a href="https:&#x2F;&#x2F;csapp.cs.cmu.edu&#x2F;" rel="nofollow">https:&#x2F;&#x2F;csapp.cs.cmu.edu&#x2F;</a>
评论 #22279271 未加载
评论 #22279773 未加载
评论 #22280034 未加载
ajrossover 5 years ago
Honestly? Learn old-style 8086 assembly, then 386 code. The new stuff may be architecturally simpler in many ways, but it sits as an edge case on top of a very thick historical stack that seems completely insane if you look at it a priori.<p>But the early CPUs were actually quite simple! At the time &quot;CISC&quot; was a good thing because it provided straightforward mechanisms for expressing things (e.g. &quot;push&quot;, &quot;call&quot;, load a struct field with an offset...) that real world programmers needed to do all the time.
评论 #22279787 未加载
评论 #22280087 未加载
评论 #22279897 未加载
eldavidoover 5 years ago
It really depends on your starting point.<p>If you know how to write low-level C (i.e. with direct Win32&#x2F;POSIX API calls), that&#x27;s a good start. If you don&#x27;t know what that means, you need to master this first. So much of assembly is built to support higher-level programming, things like segments, indirect references, system calls, etc., so it pays to know the WHY of all of it (e.g. do you know what a frame pointer is? why it&#x27;s useful and can sometimes be omitted)? Learn this stuff first.<p>Once you have a good handle on C, you need to start learning how operating systems and memory management work, at least the &quot;client side&quot; of them accessible from userspace.<p>Then you might want to dip your toe into how CPUs are built, with pipelines, registers, caches, all of that.<p>If you&#x27;ve mastered those things, gcc -S will provide everything else you need (another comment suggested this).<p>I learned this stuff in a traditional university computer engineering program. It helped a lot. But for context, this question feels a little like, &quot;can someone explain quantum physics&quot;? It&#x27;s a huge topic but only like 5% is the actual thing you&#x27;re asking about, the other 95% is the conceptual machinery (calculus, probability, mechanics) it&#x27;s built on. Mastering all the other stuff is actually the hard part. For all intents and purposes, assembly is just a notational convenience for expressing program structure in the only way a CPU can understand it. At least 90% of the difficulty is understanding how CPUs work, and how to think at sufficiently low level that you can express human-useful work at such a low level of abstraction.<p>It would also be nice to know why you want to know this. Writing a device driver is going to be different from writing an operating system, which will be different from writing tight numerical loops in assembly. And in any case, dollars to donuts you won&#x27;t be able to beat a modern optimizing compiler performance-wise.<p>Hope this helps.
评论 #22280664 未加载
评论 #22280735 未加载
earenndilover 5 years ago
<a href="https:&#x2F;&#x2F;beginners.re&#x2F;" rel="nofollow">https:&#x2F;&#x2F;beginners.re&#x2F;</a>
评论 #22281650 未加载
评论 #22280416 未加载
评论 #22279993 未加载
htfy96over 5 years ago
For practice and user-mode stuffs <a href="https:&#x2F;&#x2F;godbolt.org&#x2F;" rel="nofollow">https:&#x2F;&#x2F;godbolt.org&#x2F;</a> is a valueless tool to help you view the output of any C program. Simply write any C program on the left, and add &quot;-O1&quot; in flag inputs. Assembly with color representing line-mappings would appear on the right.
评论 #22280724 未加载
评论 #22280608 未加载
moggiover 5 years ago
Especially if you need x64 assembly for performance optimization or during profiling a combination of godbolt (<a href="https:&#x2F;&#x2F;godbolt.org&#x2F;" rel="nofollow">https:&#x2F;&#x2F;godbolt.org&#x2F;</a>) and Agner Fog&#x27;s incredible PDFs at <a href="https:&#x2F;&#x2F;agner.org&#x2F;optimize&#x2F;" rel="nofollow">https:&#x2F;&#x2F;agner.org&#x2F;optimize&#x2F;</a> (especially parts 2, 3 and 4) are helpful.<p>The other useful step has been to write C functions and compile the code with a good compiler (good experiences with Intel, gcc and llvm) first at -O0 and later at -O2 or -O3 to understand how high level concepts can be translated to assembly.<p>This requires to have at least a basic understanding of registers and basic assembly concepts but at least has helped me apply the concepts to real code.
tony_codesover 5 years ago
I wrote a guide a while back that may help. It includes a docker container setup to enable debugging via VS code: <a href="https:&#x2F;&#x2F;tonycodes.com&#x2F;assembly" rel="nofollow">https:&#x2F;&#x2F;tonycodes.com&#x2F;assembly</a>
vnoriloover 5 years ago
Your sources indicate an interest in reverse engineering, but another motivator for low level machine programming is performance.<p>For me, a great way of learning the latter is to pick a task with some instant gratification (audio dsp, software texmapping or shaders?) and start writing some of that in inline assembly.<p>I suggest looking at your C compiler output, learning about SIMD instructions and using a pipeline simulator to see why and how it performs like it does. I used VTune and AMD Codeanalyst back in the day, don&#x27;t know what&#x27;s the current SoA.
oneplaneover 5 years ago
As far as I know, x86_64 added instructions, modes and memory address changes but the assembly is the same?<p><a href="https:&#x2F;&#x2F;software.intel.com&#x2F;en-us&#x2F;articles&#x2F;introduction-to-x64-assembly" rel="nofollow">https:&#x2F;&#x2F;software.intel.com&#x2F;en-us&#x2F;articles&#x2F;introduction-to-x6...</a><p>I mean, you have different modes, and in 64-bit mode EAX becomes RAX for example.
评论 #22279388 未加载
zellyover 5 years ago
It looks intimidating, but there&#x27;s not actually much to learn. You need to memorize a couple dozen common opcodes. Keep the Intel manual open and flip to the page of the opcode. Also the first few sections go into detail about paging, data types, CPUs, etc. if you don&#x27;t already know about it.<p><a href="https:&#x2F;&#x2F;software.intel.com&#x2F;en-us&#x2F;articles&#x2F;intel-sdm" rel="nofollow">https:&#x2F;&#x2F;software.intel.com&#x2F;en-us&#x2F;articles&#x2F;intel-sdm</a><p>Try to reverse engineer something you don&#x27;t have the debug symbols for. One of the big pain points was figuring out the calling convention i.e. what registers correspond to which function arguments on different platforms:<p><a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;X86_calling_conventions" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;X86_calling_conventions</a><p>For reverse engineering in particular, this was a good resource:<p><a href="https:&#x2F;&#x2F;beginners.re&#x2F;" rel="nofollow">https:&#x2F;&#x2F;beginners.re&#x2F;</a>
_d03over 5 years ago
There are some books suited for beginners and these are:<p>1. <a href="https:&#x2F;&#x2F;www.amazon.com&#x2F;Low-Level-Programming-Assembly-Execution-Architecture&#x2F;dp&#x2F;1484224027&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.amazon.com&#x2F;Low-Level-Programming-Assembly-Execut...</a><p>2. <a href="http:&#x2F;&#x2F;www.egr.unlv.edu&#x2F;~ed&#x2F;assembly64.pdf" rel="nofollow">http:&#x2F;&#x2F;www.egr.unlv.edu&#x2F;~ed&#x2F;assembly64.pdf</a><p>3. <a href="https:&#x2F;&#x2F;www.amazon.com&#x2F;Introduction-Bit-Assembly-Programming-Linux&#x2F;dp&#x2F;1484921909&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.amazon.com&#x2F;Introduction-Bit-Assembly-Programming...</a><p>The first one is somewhat written in &quot;weird English&quot; (Russian English?), but it is still readable. It really helped me with x64 assembly as a C programmer. I have used 2 and 3 as reference most of the time and the first was basically my &quot;main x64 assembly book&quot;. I would also recommend getting more proficient in C programming either by studying books such as &quot;Expert C&quot; and the &quot;The C Programming Language&quot; or reading &quot;advanced&quot; stuff somewhere on the Internet, e.g.: <a href="http:&#x2F;&#x2F;www.pvv.org&#x2F;~oma&#x2F;DeepC_slides_oct2011.pdf" rel="nofollow">http:&#x2F;&#x2F;www.pvv.org&#x2F;~oma&#x2F;DeepC_slides_oct2011.pdf</a><p>The main takeaway in all this for me was learning about the call stack and the different calling conventions which gives you a clue on how recursion works under the hood.<p>Also when you are done learning about &quot;practical computer architecture&quot;, i.e. assembly language programming, learn stuff about operating systems as well:<p><a href="http:&#x2F;&#x2F;pages.cs.wisc.edu&#x2F;~remzi&#x2F;OSTEP&#x2F;" rel="nofollow">http:&#x2F;&#x2F;pages.cs.wisc.edu&#x2F;~remzi&#x2F;OSTEP&#x2F;</a><p>Fun fact: this is not really related to assembly programming, but functions such as setjmp() and longjmp() are used for implementing exception handling.
znpyover 5 years ago
&quot;Assembly Language Step-by-Step Third Edition&quot; 3rd Edition by Jeff Duntemann is a great book.<p>It starts with the very foundation and builds up, up to interfacing with C and implementing data structures, still in assembly.<p>Sadly, this book still references 32-bit ISA. My guess is that the author got old enough not to bother updating the book anymore (the first editions of the book were about assembly programming in DOS, then DOS and Linux, then Linux only).<p>Still a very valid book, as x86-64 is backwards-compatible with 32-bit x86. Also, as somebody else has written, once you understand the basics, you can mostly swap things like register names and&#x2F;or look to the reference pages of your cpu&#x2F;linker&#x2F;assembler.
billfruitover 5 years ago
I would recommend &#x27;Computer Systems: A Programmers Perspective&#x27; by Randal E Bryant and David O&#x27; Hallaron as an introduction before proceeding on to the official manuals and documentations.<p>3rd edition has much info on modern x86.
2ton_jeffover 5 years ago
I wrote a Linux general purpose library for x64 assembler: <a href="https:&#x2F;&#x2F;2ton.com.au&#x2F;HeavyThing&#x2F;" rel="nofollow">https:&#x2F;&#x2F;2ton.com.au&#x2F;HeavyThing&#x2F;</a> and in recent months I decided to start doing video tutorials about the &quot;how and why&quot; of same. Learning I think is made easiest in Linux by learning how to navigate the syscall interface and how &quot;man 2 write&quot; becomes an important skill. Edit: Videos link as well: <a href="https:&#x2F;&#x2F;2ton.com.au&#x2F;videos&#x2F;" rel="nofollow">https:&#x2F;&#x2F;2ton.com.au&#x2F;videos&#x2F;</a>
PopeDotNinjaover 5 years ago
For a soft intro to assembler, you can play video games Human Resource Machine.
评论 #22283212 未加载
markwrobelover 5 years ago
As others points out NAND to Tetris is a really good entry point to learn assembly. It begins with you designing the hardware from NAND gates. You will make all hardware components like memory, instruction decoder, ALU, and CPU, and put them together into a computer. The next step is to build a virtual machine and then a compiler for a high-level language called Jack. The keystone project is to build a game in Jack and have it run on the computer that you build :)<p><a href="https:&#x2F;&#x2F;www.nand2tetris.org&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.nand2tetris.org&#x2F;</a><p>I have since then ventured into Motorola 68000 assembly coding, by reading an old Amiga course in machine code from the late 80&#x27;ties. It&#x27;s fascinating to learn from an old platform like the Amiga 500.<p>To keep myself motivated, I have written a lot of posts that chronicles my progress through the course.<p><a href="https:&#x2F;&#x2F;www.markwrobel.dk&#x2F;project&#x2F;amigamachinecode&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.markwrobel.dk&#x2F;project&#x2F;amigamachinecode&#x2F;</a><p>EDIT: I can also recommend this game, that is inspired by NAND to Tetris. Where you build the hardware in your browser :) <a href="http:&#x2F;&#x2F;www.nandgame.com&#x2F;" rel="nofollow">http:&#x2F;&#x2F;www.nandgame.com&#x2F;</a>
basementcatover 5 years ago
I found compiler output to be a good resource.<p>$ gcc foo.c -S
评论 #22281071 未加载
评论 #22280303 未加载
评论 #22281671 未加载
pjmlpover 5 years ago
Others already have given plenty of useful information, I just have a basic one.<p>Stay with Intel syntax, nevermind about AT&amp;T syntax, beyond learning on how to read it.<p>PC world is all about Intel syntax, AT&amp;T is lower level on how instructions get expressed and Assemblers macro capabilities just suck compared with what TASM and MASM were already capable of on the MS-DOS days.
kristovover 5 years ago
I&#x27;m learning Z80 for programming the rc2014 kit (it&#x27;s really nice kit if your also into electronics). There is a surprising lack of information online about the techniques of programming. For me that&#x27;s the biggest struggle. You can know the instructions but juggling registers in an optimal way is hard. I&#x27;m currently learning I can use the stack inside a routine to have more values in the air at the same time, but then I read some example code and learn a particular instruction can be used in a clever way to avoid all my stack juggling. I am finding it can take hours to write a simple routine. I really get it now when people write it&#x27;s a non-trivial problem to map C to assembly (especially Z80). Hell, it&#x27;s fun though! Screw all these high level languages, let&#x27;s do everything in assembly and damn the horses!!
Grimm1over 5 years ago
I learned x86 from Xeno Kovah&#x27;s course and I imagine his x64 will be just as comprehensive.<p>It looks like his x64 is just slides instead of videos which may be better, sitting through 16hrs of video when I was learning x86 was ... an experience, but a very useful one.<p>Anyway, whenever someone asks this question I don&#x27;t hesitate to bring up his work and trainings I think they&#x27;re really useful. I know this is for reverse engineering but if you can reverse engineer x64 you can certainly write it.<p><a href="http:&#x2F;&#x2F;opensecuritytraining.info&#x2F;IntroX86-64.html" rel="nofollow">http:&#x2F;&#x2F;opensecuritytraining.info&#x2F;IntroX86-64.html</a>
Talinxover 5 years ago
This book is a good starting point for x86-64 Assembly with Linux: <a href="http:&#x2F;&#x2F;www.egr.unlv.edu&#x2F;%7Eed&#x2F;x86.html" rel="nofollow">http:&#x2F;&#x2F;www.egr.unlv.edu&#x2F;%7Eed&#x2F;x86.html</a>
JTechnoover 5 years ago
x86-64 Assembly Language Programming with Ubuntu By Ed Jorgensen<p><a href="http:&#x2F;&#x2F;www.egr.unlv.edu&#x2F;~ed&#x2F;x86.html" rel="nofollow">http:&#x2F;&#x2F;www.egr.unlv.edu&#x2F;~ed&#x2F;x86.html</a>
foucover 5 years ago
I know this isn&#x27;t quite what you&#x27;re asking, but I really recommend &quot;Assembly Language Step By Step, Third Edition&quot; by Jeff Duntemann<p>One of the best 32bit x86 assembly books out there.
评论 #22281865 未加载
TACIXATover 5 years ago
I plan on making some videos on this once I get through web vulns. I&#x27;ve written x64 on Windows and Linux. On Windows you need to get ml64.exe, it gets installed with visual studio. You can invoke it from the command line. On Linux I usually use NASM I think, cause it supports Intel syntax.<p>The only really annoying thing is the stack alignment for calls. I usually just make a macro to check rsp and align if needed. Other than that I think it is similar enough to x86 just with different registers.
rboes2over 5 years ago
I thought this book was pretty good when I took computer architecture course. <a href="https:&#x2F;&#x2F;www.google.com&#x2F;url?sa=t&amp;source=web&amp;rct=j&amp;url=https:&#x2F;&#x2F;www.amazon.com&#x2F;Assembly-Language-x86-Processors-7th&#x2F;dp&#x2F;0133769402&amp;ved=2ahUKEwiVsdHOy8PnAhVROH0KHbLeBlkQFjAIegQIBBAB&amp;usg=AOvVaw3Gwhnbo6SX5LuOprpzZzFo" rel="nofollow">https:&#x2F;&#x2F;www.google.com&#x2F;url?sa=t&amp;source=web&amp;rct=j&amp;url=https:&#x2F;...</a>
justin66over 5 years ago
Kip Irvine&#x27;s textbook on the subject is good. It&#x27;s oriented towards Visual Studio (good, easy debugging) and windows but a fellow student had no problem using Linux tools to follow along and complete the course, which is not a bad way learn.<p>It&#x27;s useful to at least look at such a textbook to make sure you don&#x27;t skip any of the easy, sort-of prerequisite material.
simonebrunozziover 5 years ago
I wish there were an equivalent of &quot;core war&quot; [0]. I &quot;played&quot; with it ~30 years ago and I still remember a good chunk of the language.<p>[0]: <a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Core_War" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Core_War</a>
blackmailover 5 years ago
book link -&gt; <a href="http:&#x2F;&#x2F;vkh8ilkvln.pdfcloud.org&#x2F;dl2.php?id=174628357&amp;h=7a0f1670c910af068e4a1eb90a0662c4&amp;u=cache&amp;ext=pdf&amp;n=Assembly%20language%20for%20x86%20processors%207th%20editionpdf" rel="nofollow">http:&#x2F;&#x2F;vkh8ilkvln.pdfcloud.org&#x2F;dl2.php?id=174628357&amp;h=7a0f16...</a><p>video link -&gt; <a href="https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=vtWKlgEi9js&amp;list=PLXYpRL4SQpMnHL0c6PwSKAHCId3F6uVwi" rel="nofollow">https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=vtWKlgEi9js&amp;list=PLXYpRL4SQp...</a><p>linker -&gt; <a href="http:&#x2F;&#x2F;www.masm32.com&#x2F;" rel="nofollow">http:&#x2F;&#x2F;www.masm32.com&#x2F;</a><p>some way to understand assembly lang
akullppover 5 years ago
I recommend [Paul Carter&#x27;s PC Assembly](<a href="http:&#x2F;&#x2F;pacman128.github.io&#x2F;pcasm&#x2F;" rel="nofollow">http:&#x2F;&#x2F;pacman128.github.io&#x2F;pcasm&#x2F;</a>) which helped me getting started back in my pentesting days.
karposover 5 years ago
<a href="https:&#x2F;&#x2F;en.m.wikipedia.org&#x2F;wiki&#x2F;Code:_The_Hidden_Language_of_Computer_Hardware_and_Software" rel="nofollow">https:&#x2F;&#x2F;en.m.wikipedia.org&#x2F;wiki&#x2F;Code:_The_Hidden_Language_of...</a>
screedover 5 years ago
Start with this one: &quot;Reverse Engineering for Beginners&quot; <a href="https:&#x2F;&#x2F;torus.company&#x2F;writings&#x2F;RE4B-EN.pdf" rel="nofollow">https:&#x2F;&#x2F;torus.company&#x2F;writings&#x2F;RE4B-EN.pdf</a>
vips7Lover 5 years ago
Not x86_64 but Xeno Kovah&#x27;s courses were really great to teach me x86:<p><a href="http:&#x2F;&#x2F;opensecuritytraining.info&#x2F;IntroX86.html" rel="nofollow">http:&#x2F;&#x2F;opensecuritytraining.info&#x2F;IntroX86.html</a>
TheUndead96over 5 years ago
I used this book in university, and it was very informative: <a href="http:&#x2F;&#x2F;rayseyfarth.com&#x2F;asm&#x2F;" rel="nofollow">http:&#x2F;&#x2F;rayseyfarth.com&#x2F;asm&#x2F;</a>
vkakuover 5 years ago
We also got plenty of general purpose registers in x64, apart from the rax stuff.<p>Plus, you now have the ymm and possibly zmm stuff going on :)
vasili111over 5 years ago
Maybe not modern but a goood introduction &quot;Assembly Language Step-by-Step&quot;. Good for self study.
rawoke083600over 5 years ago
Stupid question... can you use assembly for GPU coding ? I mean like in a semi-practical way ?
ifoundthetaoover 5 years ago
I enjoyed the Pentester Academy course, and have recommended it several times.
open86over 5 years ago
So when do the patents expire on x86? And can we do a clean room version?
snarfyover 5 years ago
Have you looked at the official docs? Back in 386 days that&#x27;s all we had.<p><a href="https:&#x2F;&#x2F;software.intel.com&#x2F;en-us&#x2F;articles&#x2F;intel-sdm" rel="nofollow">https:&#x2F;&#x2F;software.intel.com&#x2F;en-us&#x2F;articles&#x2F;intel-sdm</a>
评论 #22280115 未加载
Digg_movover 5 years ago
i have no thinkint