Inline assembler – Assembler – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Inline assembler – Assembler – Fórum – Programujte.comInline assembler – Assembler – Fórum – Programujte.com

 

Kolcek930
Duch
9. 3. 2010   #1
-
0
-

Zdravím,
pokouším se o inline assembler v C++, ale když zkusím něco uložit do např. EAX, tak mi program spadne. Ukládám to tam takhle.

asm("MOV %eax, 9");

S asm teď začínám, tak prosím berte ohledy :) Kompilátor používám defaultní co se instaluje s Code::Blocks. Předem díky za rady.

Nahlásit jako SPAM
IP: 195.113.151.–
illioner0
Stálý člen
9. 3. 2010   #2
-
0
-

Kdy to padá až po spuštění toho EXE nebo čistě při překladu? Můžou být operandy obráceně a nesmíří se s kopírováním do 9 :D, prostuduj si to někde v dokumentaci kompileru.

Nahlásit jako SPAM
IP: 85.71.152.–
Nechápu softwarové firmy, ktere utrácejí za čim dál těžkopádnější DRM ochranu!! Vidět kolem snahu o free2play model je jako příjemné připomenutí časů shareware (jen ten Microsoft stále nic nepochopil)
Kolcek930
Duch
9. 3. 2010   #3
-
0
-

Spadne to při spuštění toho exe. A i když jsem to zkusil přepsat na asm("MOV 9, %eax"); tak to spadne.

Nahlásit jako SPAM
IP: 195.113.151.–
m->29+6
Super člen
9. 3. 2010   #4
-
0
-

Nie je syntax takáto?

asm("movl 9,%eax\n");
Ak ti to spadne až pri spustení tak pravdepodobne preto, že si len tak priradil do EAX hodnotu 9 a prepísal tak programu nejakú rozumnejšiu hodnotu.
A inak, v Code::Blocks ide prepnúť syntax na Intel:
asm(".intel_syntax noprefix \n"   // prepneme z AT&T syntaxe na Intel

"mov eax,9\n"
".att_syntax\n" // dame vsetko do povodneho stavu
);

Nahlásit jako SPAM
IP: 147.229.208.–
Kolcek930
Duch
9. 3. 2010   #5
-
0
-

Teď už to funguje moc díky ;) Takže jestli to chápu, tak problém byl v syntaxi, takže teď když to přepnu dycky na začátku na intel_syntax, tak můžu normálně psát ASM kód?

Nahlásit jako SPAM
IP: 195.113.151.–
m->29+6
Super člen
9. 3. 2010   #6
-
0
-

Hej, ak sa prepneš tak môžeš písať v Intel syntaxi. Ale vždy sa potom musíš naspäť prepnúť na AT&T, lebo gcc to generuje v tom a to by robilo neplechu. No ani tá AT&T nie je ťažká a niekedy je dokonca zrozumiteľnejšia a úspornejšia. Ale asi si nikdy nezvyknem na opačné písanie operandov :-D

Nahlásit jako SPAM
IP: 147.229.208.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 32 hostů

Podobná vlákna

Inline — založil Alyx_Vance

Co je to inline funkcia? — založil Tom@sQo

Inline Methody — založil Miro1701

Inline dropdown menu — založil Hanulik

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý