News for hackers. Stuff that matters.
Re:x86 Assembly Guide (2018) by npo_ on Saturday April 06, 2019 @10:36AM (#19590930)
These links are amazing. I would have never found these. I've been looking for good introductory resources for the past few days now. So glad to see this pop up in my news reader.

Thank you!

Re:x86 Assembly Guide (2018) by vips7L on Saturday April 06, 2019 @01:34PM (#19591911)
Xeno Kovah's courses [0] are excellent for learning assembly.

[0] http://opensecuritytraining.info/

Re:x86 Assembly Guide (2018) by srndh on Sunday April 07, 2019 @03:04AM (#19595264)
sorry, which news reader are you using?
Re:x86 Assembly Guide (2018) by warmwaffles on Saturday April 06, 2019 @11:51AM (#19591336)
Archived the stanford one in case it becomes dead https://web.archive.org/web/20190406155050/https://web.stanf...
Re:x86 Assembly Guide (2018) by moggi on Saturday April 06, 2019 @01:46PM (#19591985)
Also the awesome pdfs by Agner Fog that everyone doing x86-64 programming should read: https://agner.org/optimize/
Re:x86 Assembly Guide (2018) by Arelius on Saturday April 06, 2019 @04:19PM (#19592788)
Awesome!

Any chance you, or anyone else has documentation on x86_64 Windows calling conventions? That's where I've been getting stuck.

Re:x86 Assembly Guide (2018) by CalChris on Saturday April 06, 2019 @04:28PM (#19592836)
https://docs.microsoft.com/en-us/cpp/build/x64-calling-conve...

After you read that, you might want to look at the LLVM source

https://github.com/llvm-mirror/llvm/blob/master/lib/Target/X...

  /// The C convention as implemented on Windows/x86-64 and
  /// AArch64. This convention differs from the more common
  /// \c X86_64_SysV convention in a number of ways, most notably in
  /// that XMM registers used to pass arguments are shadowed by GPRs,
  /// and vice versa.
  /// On AArch64, this is identical to the normal C (AAPCS) calling
  /// convention for normal functions, but floats are passed in integer
  /// registers to variadic functions.
Re:x86 Assembly Guide (2018) by afranchuk on Saturday April 06, 2019 @04:27PM (#19592830)
IIRC: while it's not explicitly documented, x86_64 was late enough in the game that both windows and Unix systems have the same calling convention. Saves a lot of hassle :)
Re:x86 Assembly Guide (2018) by int_19h on Saturday April 06, 2019 @06:14PM (#19593337)
They do not use the same convention. AMD did define a calling convention as part of their SysV ABI spec, and pretty much everybody adopted that ABI... except for Windows.

As to why, the best we have is informed speculation:

https://stackoverflow.com/questions/4429398/why-does-windows...

Re:x86 Assembly Guide (2018) by jcranmer on Saturday April 06, 2019 @06:13PM (#19593334)
Nope, the Windows ABI uses a different set of registers than the SysV (Unix) ABI. SysV uses rdi, rsi, rdx, rcx, r8, r9 (in that order), and Windows uses rcx, rdx, r8, r9 (in that order).
Re:x86 Assembly Guide (2018) by billti on Sunday April 07, 2019 @12:43PM (#19597988)
It's not just the registers, the use of the stack (e.g. lack of a "red zone" on Windows) as well as the data used for exception handling are different too.

The MSDN links above are quite detailed on what Windows implements. The post by Eli at https://eli.thegreenplace.net/2011/09/06/stack-frame-layout-... goes over some Windows differences towards the end.

Re:x86 Assembly Guide (2018) by W-Stool on Saturday April 06, 2019 @12:56PM (#19591674)
Very useful, thank you!