Wstawki assemblera Cpp code::blocks - problem "too many memory references for `mov'"
Ostatnio zmodyfikowano 2015-03-27 20:05
jegor377 Temat założony przez niniejszego użytkownika |
Wstawki assemblera Cpp code::blocks - problem "too many memory references for `mov'" » 2015-03-23 15:44:42 Otóż mam problem, bo chciałbym się zacząć uczyć assemblera, pomyślałem, że najlepiej to zrobię ucząc się go we wstawkach w cpp, jednak nie chcą one współpracować (co nie co już się nauczyłem o asm, ale takie mega podstawy), wpisałem do opcji linkera "-masm=intel", jednak dalej nic... Mój kod wygląda tak: #include <iostream>
using namespace std;
int main( int argc, char * argv[] ) { asm( "mov eax, 0x1\n" ); return 0; }
jednak to nie działa... Gdzieś zobaczyłem, że jak dam znak procenta przed eax to niby ma zadziałać i tak też się stało jednak, po uruchomieniu programu, program wywalił... Nie wiem dla czego... Czy to dlatego, że zrobiłem coś źle, czy dlaczego? PS funkcje _asm, __asm, __asm__, _asm_ mi nie działają... :C |
|
maly |
» 2015-03-24 07:59:14 wpisałem do opcji linkera "-masm=intel" | -masm jest opcją kompilatora. |
|
jegor377 Temat założony przez niniejszego użytkownika |
» 2015-03-26 22:39:41 ok, to jak zrobić, by można było te wstawki pisać? :) |
|
1aam2am1 |
» 2015-03-27 20:05:00 Kiedyś napisałem funkcje z asm. Wiec sobie pościągaj trochę, doczytaj. namespace binary { template < typename T > inline T & shift_bit_lewo( T & co, const int8_t & ile ) { static_assert( std::is_unsigned < T > { }, "T should be unsigned" ); asm volatile( "rol %%cl, %0": "+r"( co ) : "ecx"( ile ) ); return co; } template < typename T > inline T & shift_bit_prawo( T & co, const int8_t & ile ) { return shift_bit_r( co, - ile ); } }
|
|
« 1 » |