Keresés

Új hozzászólás Aktív témák

  • Jester01

    veterán

    válasz bambano #14089 üzenetére

    Minden bizonnyal a megfelelő assemblert hívja, mivel a gcc alapból is assembly kódot generál és már sikerült neki pár modult lefordítania. Az inline asm blokkokat még a gcc alakítja át és illeszti be az assembly kimenetbe. Az adott hibaüzenet még a gcc-től jön, mivel az assembler már nem tudná hogy a problémás kódrészlet asm blokk volt.

    A gcc valóban tudja mit mivel fordítson, de a makefile minden bizonnyal a szokásos CXX-re hivatkozott, ami ha nincs beállítva akkor az alapértelmezés szerint a natív fordító lesz. Itt pedig cross-compile van, ezért nem lett jó.

    Az "egy architektúra" az definíció kérdése - a "mips" fordító több alváltozatra tud fordítani, amelyek kisebb-nagyobb mértékben eltérhetnek. Hasonlóan az x86-os gcc is tud 32 és 64 bites kódot generálni, illetve megadható a kismillió különböző utasításkészlet bővítmény (sse és társai) is. Például ez a kis értelmetlen asm blokk:
    __asm__ __volatile__ ("nop" : : "x" (1.0));
    az alap 32 bites gcc-vel (vagy 64 bites esetén -m32 kapcsolóval) ilyen hibát dob:
    error: impossible constraint in 'asm'
    Ha bekapcsolod az sse támogatást akkor lefordul. Lehet, hogy a kolléga is valami olyanba futott bele ami a default architektúrán nem megy.

    Jester

Új hozzászólás Aktív témák