linux: c++ inline assembler zur ausgabe eines char arrays ....



  • Hallo,ich habe noch nicht viel Ahnung von assembler, habe mir aber schon
    einiges angeschaut. Nach meiner logik müsste das Programm unten den String in line[] auf dem Bildschirm ausgeben. Ich übergebe adresse und länge. aber es wird nichts ausgegeben. compilieren geht problemlos.

    Könnt ihr mir sagen, woran es liegt? Vielen Dank im Voraus

    int main()
    {
    char line[] = {'H','a','l','l','o','\n'};
    int lenght = sizeof(line);

    asm volatile
    (
    "movl %0,%%edx # third argument: message length;"
    "movl %1,%%ecx # second argument: pointer to message to write;"
    "movl $1,%%ebx # first argument: file handle (stdout);"
    "movl $4,%%eax # system call number (sys_write);"
    "int $0x80 # call kernel;"

    : //nooutputs
    :"r"(lenght),"r"(&line)
    :"%edx","%ecx","%ebx","%eax"
    );
    }


Anmelden zum Antworten