g++ && gcc && gdb && intel

Как известно на настоящий момент времени писать на чистом ассемблере не очень выгодно,на это есть несколько причин:
1)Долго
2)Дорого

Но без него не обойтись, если вспомнить про sse,mmx,3Dnow! и прочие инструкции 64-bit ++ которые толком не реализованы в Си . Для этого выгодно делать вставки ассемблерного кода прямо в код на C/С++ . Об этом сегодня и пойдёт речь,а так же о том,как завести весь инструментарий в линуксе .


GDB - Как известно стандартно использует синтаксис AT&T (ибо unix-way). Поскольку я решил изучать nasm в intel синтаксисе,мне надо было перевести gdb в читабельный для меня режим. Собстно было найдено решение,оно оказалось весьма изящным,поскольку разработчики предусмотрели эту возможность. Для смены синтаксиса используется команда
set disassembly-flavor intel | att (на выбор)
 Что касается ассемблерных вставок кода в С++ , так и тут всё просто,нам нужно передать g++

-masm=intel
Вот пример кода с ассемблерной вставкой:
#include <iostream>



using namespace std;



int xasm = 0;



int main()

{

//int xasm = 0;

asm("mov eax, 5 \n"

"inc eax \n"

"mov [xasm], eax \n");



cout << xasm <<endl;



return 0;

}

Comments

Popular posts from this blog

Приветы всем!