Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

x86-64 assembly language: please add a short comment about what this line is for

ID: 3707698 • Letter: X

Question

x86-64 assembly language: please add a short comment about what this line is for and what this does in the program.

.file   "sections.c"

   .globl   hello
   .data
   .type   hello, @object
   .size   hello, 6
hello:
   .string   "hello"
   .globl   world
   .section   .rodata
.LC0:
   .string   "world"
   .data
   .align 8
   .type   world, @object
   .size   world, 8
world:
   .quad   .LC0
   .comm   arr_e,10,1
   .local   arr_s
   .comm   arr_s,10,1
   .text
   .globl   foo
   .type   foo, @function
foo:
.LFB0:

Explanation / Answer

.file   "sections.c" # .file is a directive. Directives start with a dot. .file indicates the original source file

name. Hence "sections.c" is the name of the original source file.

   .globl   hello # globl records that the given label "hello" is a global symbol i.e. it can be used be

used by any other modules of the code


   .data # .data shows from where the data section of the program begins

   .type   hello, @object #.type indicates the declaration of the type of symbol. Here the type of hello is

object


   .size   hello, 6 #size of the symbol hello


hello: # hello: label indicates starting of object hello

   .string   "hello" #.string is a directive which puts the given string "hello" at the current location.


   .globl   world #globl is again used to indicate the global label "world"

   .section   .rodata #.section .rodata puts the below statements in read only section

.LC0: #this label is a local label invisible to the user(begins with dot) unlike global label.

   .string   "world" # it puts "world" to the currect location


.data # data section begins here for local label


   .align 8 # it indicates that the next data generated should be aligned to modulo 8 bytes

   .type   world, @object # type of world label is object

   .size   world, 8 # size of world object is 8  

world: # object visible to users


   .quad   .LC0 # it generates a64-bit 2's complement value for .LCO


   .comm   arr_e,10,1 # allocates storage with the name arr_e to the data section with size 10 and alignment 1

   .local   arr_s # indicates that given symbol arr_s is local


   .comm   arr_s,10,1 # allocates storage with name arr_s to the data section with size 10 and alignment 1

   .text # indicates that the current section should be in .text

   .globl   foo # foo is a global symbol

   .type   foo, @function # foo symbol is of function type

foo: # beginning of function foo

.LFB0: # temporary local label