[C/C++] SHL, SHR

0

Czy w C++ istnieją odpowiedniki asemblerowych instrukcji SHR, SHL, jeżeli nie istnieją to w jaki sposób można je ręcznie napisać?

0

a shl b = a << b
a shr b = a >> b

0

a = a shl b a =<< b
a = a shr b a =>> b

0

Dzięki. To może jescze SAR, SAL, ROR, ROL, RCR, RCL

0

Dzięki. To może jescze SAR, SAL, ROR, ROL, RCR, RCL

SAL jest identyczne z SHL (czyli k;
q = q | w;

(mam nadzieję, że dobrze...)
Obroty analogicznie.

A tak na marginesie: czy w C++ są wstawki asmowe? (na pewno są, cóż to byłby za "język bliski procesorowi") i jak je się wstawia?

0

A tak na marginesie: czy w C++ są wstawki asmowe? (na pewno są, cóż to byłby za "język bliski procesorowi") i jak je się wstawia?

No cóż, ja nie znam ASM [wstyd] , ale wstawia się przez:
asm(blablabla polecenia asmowe) // wg Stroustrupa
chociaż widziałem też bez nawiasów - aaa, nie ma średnika na końcu, :-)

Pozdrawiam Mart

0

można też tak:

asm {
...
...
}

0

Wstawki sa w chyba kazdym kompilatorze c/c++ tylko róznią sie składnią i deklaracją [stuk]

0

Na kompilatorze LCC wstawki robię tak:
[code]_asm
{
}[/code]
w VC chyba jest tak samo

0

Wstawki sa w chyba kazdym kompilatorze c/c++ tylko róznią sie składnią i deklaracją [stuk]

Wydaje mi się, że wszędzie są takie same. Albo w postaci bloku (tak jak to napisał Vogel i pkapera - spotkałem się z tymi dwoma postaciami) albo jako jedna instrukcja, np.:
[code]asm int 19h[/code]

W Pascalu (nie wiem, jak w C++) można było pisać blok w jednej linii, ale wtedy trzebabyło używać średników, np.:
[code]asm mov ax,3; int 10h; end[/code]

0

W Pascalu (nie wiem, jak w C++) można było pisać blok w jednej linii, ale wtedy trzebabyło używać średników, np.:
[code]asm mov ax,3; int 10h; end[/code]

Akurat jak w Pascalu to wiem :) Ale zawsze piszę każdą instrukcję od nowej lini. Bardziej czytelnie.

0

Wstawki mogą sie róznic bo rózne kompilatory uzywają róznych assemblerów. W DJGPP trzeba uzywac składni AT&T a w np: Turbo C Intel Asm.

1 użytkowników online, w tym zalogowanych: 0, gości: 1