Home > Back-end >  Assembly code compiled from gcc not running
Assembly code compiled from gcc not running

Time:01-12

Today, I have decided to make a (very) simple OS. I don't feel like using assembly directly because I think that it is simply too messy for me. But, I know a little C, and I am eager to learn it more. I made a simple program to print a string and I want to compile it to assembly. I used this command to compile into assembly:

gcc -S foo.c

Here is my C code:

#include<stdio.h>

int main() {
        printf("Hi!!!");
}

But when I try to run the output file (foo.s), I get these errors:

foo.s:1: error: parser: instruction expected
foo.s:2: warning: label alone on a line without a colon might be in error [-w label-orphan]
foo.s:3: error: parser: instruction expected
foo.s:5: error: parser: instruction expected
foo.s:6: warning: label alone on a line without a colon might be in error [-w label-orphan]
foo.s:7: error: parser: instruction expected
foo.s:8: error: parser: instruction expected
foo.s:11: warning: label alone on a line without a colon might be in error [-w label-orphan]
foo.s:12: error: parser: instruction expected
foo.s:13: error: parser: instruction expected
foo.s:14: error: parser: instruction expected
foo.s:15: error: expression syntax error
foo.s:16: error: parser: instruction expected
foo.s:17: error: parser: instruction expected
foo.s:18: error: parser: instruction expected
foo.s:20: error: label `movl' inconsistently redefined
foo.s:18: info: label `movl' originally defined here
foo.s:20: error: parser: instruction expected
foo.s:21: error: parser: instruction expected
foo.s:22: error: parser: instruction expected
foo.s:24: warning: label alone on a line without a colon might be in error [-w label-orphan]
foo.s:26: error: parser: instruction expected
foo.s:27: error: parser: instruction expected
foo.s:28: error: parser: instruction expected

This is the command I ran to compile the assembly code:

nasm -f bin -o foo.bin foo.s

This is the assembly code in foo.s:

        .file   "foo.c"
        .text
        .section        .rodata
.LC0:
        .string "Hi!!!"
        .text
        .globl  main
        .type   main, @function
main:
.LFB0:
        .cfi_startproc
        pushq   %rbp
        .cfi_def_cfa_offset 16
        .cfi_offset 6, -16
        movq    %rsp, %rbp
        .cfi_def_cfa_register 6
        leaq    .LC0(%rip), %rdi
        movl    $0,            
  •  Tags:  
  • Related