Форум С++

 

Ответить на сообщение

Вернуться к теме

Вы отвечаете на сообщение:

Автор: exp   (02.03.2010 в 22:37)
с примером что-то не понял , eax,ebx,ecx,edx это 32x битные регистры, в них умещается только 4 байта, как и в int, long, DWORD ....
в 64х-битных системах юзаются 64x-битные rax,rbx,rcx,rdx, возможно даже от проца зависит

на С иногда просто две переменные иногда используют чтобы записать больше , в win32 например кое-где размер файла лежит в структуре в двух dword.

есть и 64х-битный тип
typedef __int64 LONGLONG;
typedef unsigned __int64 ULONGLONG;
, такие структуры
typedef struct _FLOAT128 {
__int64 LowPart;
__int64 HighPart;
} FLOAT128;
правда там везде с отписками типа "__int64 is only supported by 2.0 and later midl. (Microsoft Interface Definition Language я так понял)" или что-то похожее

Есть ещё уже готовые библиотеки ещё для работы с большими числами

А в gcc AT&T-синтаксис ассемблера, вроде традиционно под motorola процессоры кодили таким синтаксисом,
ссылку на описание синтаксиса не нашёл, но отличается сильно, хотя можно и более-менее привычно делать,
вот здесь было например
тут была тема
> автор: exp (05.06.2009 в 21:12)

Поторопился со вставками asm кода, и
оказалось компилируется ,) например такой код
main() {
char *buf = "Строка";

 __asm__ ("push esi \n\
         mov esi, %0"
::"m"(buf));
 __asm__ ("push 1 \n\
         push esi \n\
         push esi \n\
         push 0 \n"

         "call _MessageBoxA@16 \n"
         "xor eax,eax\n\
         pop esi"

         );
printf("%s\n", buf);
getch();
putch(7); //  символ 0x07
}

так-же вез #include`sов
только нужно кроме кроме выключения
"Проект-параметры-Компилятор-Компилятор С-поддержка стандартных ..."
ещё добавлять строку -masm=intel ? там где
"Проект-параметры-Параметры-'Компилятор'"


непонятно почему кроме messagebox ничего не показывает :) но работает


читать всёравно где-то нужно, а везде AT&T
, я только по поводу того как передать переменную из c в asm >mov esi, %0"::"m"(buf)); немного разбирался, но быстро бросил это дело и забыл :)
Есть возможность просто на ассемблере компилировать объектный файл с функциями и прилинковывать к проекту.


Ваше имя:

Пароль:

Цитировать

Используйте тэги для выделения текста:
Код: [code][/code]
Жирный: [b][/b]
Наклонный: [i][/i]
URL: [url][/url]

Сообщение:

Прикрепить: