What is the use of .byte assembler directive in gnu assembly?

There are a few possibilities… here are a couple I can think of off the top of my head:

  1. You could access it relative to a label that comes after the .byte directive. Example:

      .byte 0x0a
    label:
      mov (label - 1), %eax
    
  2. Based on the final linked layout of the program, maybe the .byte directives will get executed as code. Normally you’d have a label in this case too, though…

  3. Some assemblers don’t support generating x86 instruction prefixes for operand size, etc. In code written for those assemblers, you’ll often see something like:

      .byte 0x66
      mov $12, %eax
    

    To make the assembler emit the code you want to have.

Leave a Comment