views:

34

answers:

1

I've been trying for the past week to find a decent resource on floating point arithmetic for x86 assembly using AT&T syntax. Ideally, a list of the opcodes, what they do, and where the floats are stored. I am familiar with IEEE 754 representation. I am not familiar with the floating point stack, and any assembly referring to floating point arithmetic.

It's strange how difficult this is to find.

EDIT: I've been looking at gcc -S output for the past month learning the assembly. That's how I figured out everything except floating point arithmetic. Even after going through dozens of small programs compiled without optimizations, I still can't figure out much about the floating point opcodes and the stack. I've only found trivial examples online.

+3  A: 

Okay. Start with Intel syntax first, because most x86 assembly coders use it. Intel's manuals are a great resource for learning about how the x86 handles floating-point stuff.

After you learn x86 assembly in general, AT&T syntax isn't so hard to learn. The main things to note are:

  • registers are prefixed by %; numeric constants are prefixed by $
  • register order is swapped for most two-operand instructions (i.e., source first, target last)
  • instruction names specify the size; so instead of mov dword ptr [ebx], 1337, you'd say movl $1337, (%ebx).
Chris Jester-Young
Kizaru
Chris Jester-Young
I have the compiler fully set for everything except floats at the moment. It's the one thing holding me back. This is a project for a course.
Kizaru
Chris Jester-Young
Suggestion: Write some floating point code in C and compile it with gcc -S. This will quickly show you what you need to know to deal with FP from AT there are a few exceptions, but they're very few and far between.
Cody Brocious