Avatar billede brhino Nybegynder
18. maj 2003 - 12:47 Der er 12 kommentarer og
1 løsning

ASM kommandoer i C++

Jeg har længe sværget til ASM som programerings sprog, men har på det seneste fået øjnene op for C++. Generelt sparer man en masse tid og slipper for at udtænke lange besværlige formler selv ;-). Men jeg er ved at gå til pga. alle disse sindsyge funktioner så som C++ hele tiden kalder fra MSVCRT.DLL. Tag nu f.eks. div_t (Integer divide). Hvorfor skal den kaldes fra et bibliotek og bruge tid, når IDIV kommandoen gør den samme funktion ?? Eller _rotl/_rotr (Bitwise rotation left/right), hvorfor ikke bare bruge ROL/ROR ??? Dette er sådanne ting som driver mig til vanvid i C++.

Mit spørgsmål er : kan det virkelig passe at man ikke kan udføre simple kommandoer som IDIV, ROR, ROL og lignende i C++ uden at skulle kalde MSVCRT ??

BRhino
Avatar billede arne_v Ekspert
18. maj 2003 - 12:51 #1
Normalt har man i C++ mulighed for at skrive:

asm("en assembler instruktion");

midt i sin C++ kode.

Hvordan man får sin C++ og sin assemble rkod etil at snakke fornuftigt
sammen er compiler og platform specifikt.

Så hvilken compiler/platform bruger du ?
Avatar billede segmose Nybegynder
18. maj 2003 - 12:58 #2
Avatar billede brhino Nybegynder
18. maj 2003 - 13:22 #3
Jeg bruger Dev-C++ 4.9.8.0.
Avatar billede soreno Praktikant
18. maj 2003 - 13:25 #4
Så er segmoses link yderst relevant.
Syntaksen er, som linket fortæller, at&t (som jeg synes er rodet).
De fleste andre compilere er intel syntaks).
Avatar billede arne_v Ekspert
18. maj 2003 - 13:27 #5
Den bruger GCC.

Så tror jeg at du vil finde følgende link interessant:

http://www.opennet.ru/base/dev/gccasm.txt.html
Avatar billede soreno Praktikant
18. maj 2003 - 13:27 #6
Dev-c++ bruger MinGW compileren - som er gcc til Windows. Den "djgpp" som er omtalt i linket er også baseret på gcc.
Avatar billede brhino Nybegynder
18. maj 2003 - 13:39 #7
Jeg takker for svarene. Jeg vil kigge lidt på de forskellige link. Men jeg må indrømme at at&t ser meget rodet ud. Jeg er tilhænger af god gammel intel.

Men tak for hjælpen
Avatar billede soreno Praktikant
18. maj 2003 - 13:41 #8
Debuggeren til gcc (gdb) kan sættes til at udskrive intel istedet for at&t. Men jeg har ikke set nogen måde til at få det til at spille med compileren :-(
Avatar billede arne_v Ekspert
18. maj 2003 - 13:53 #9
Hvis du foretrækker traditionel PC syntax i.s.f. traditionel Unix
syntax, så skulle du måske hente den gratis command line C/C++
compiler fra Borland.

Jeg er ret sikker på at den bruger traditionel PC syntax.
Avatar billede soreno Praktikant
18. maj 2003 - 13:58 #10
Jeg synes at have læst at den compiler ikke inkluderer en assembler - det er et ekstra (købe) produkt (tasm).

Men jeg er ikke sikker.
Avatar billede arne_v Ekspert
18. maj 2003 - 14:02 #11
Det er ganske rigtigt at gratis BCC command-line ikke inkluderer
TASM.

Men jeg tror ikke at den skal bruge TASM for at lave inline asssembler.
Avatar billede segmose Nybegynder
18. maj 2003 - 23:57 #12
Nej, hvis man kun laver lidt inline så behøver man ikke TASM.
Avatar billede soreno Praktikant
19. maj 2003 - 06:26 #13
Dejligt, så må jeg da vist prøve at have fat i borlands compiler og teste den :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester