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

前端 未结 4 1399
借酒劲吻你
借酒劲吻你 2020-12-10 03:41

While going through some C code having inline assembly I came across the .byte (with a Dot at the beginning) directive.

On checking the assembly reference on web I f

4条回答
  •  情歌与酒
    2020-12-10 04:16

    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.

提交回复
热议问题