Реферат: Взаимосвязь языков C и ассемблера
1. @ test $ gv proc near
push bp
mov bp, sp
pop bp
ret
@ test $ gv endp
2. @ test $ gi proc near
.............
@ test $ gi endp
3. @ test $ gii proc near
............
@ test $ gii endp
4. @ test $ gfd proc near
............
@ test $ gfd endp
BC++ разрешает использование неискаженных имен asm функций, определяя стандартные имена С функций в С программах. Для этого в программе определяется внешний С блок:
extern “C”{
int add(int *a, int b);
}
________________
public _add
_add proc ...и т.д.
Определение или декларирование asm функции во внешнем С блоке избавляет программиста от необходимости определения действительного имени ассемблерной функции и повышает наглядность.
С++ передает параметры функции через стек. Перед тем как вызвать функцию С++ помещает параметры в стек, начиная с последнего.
3.4 Ассемблирование и компоновка внешних модулей
Существует несколько методов ассемблирования, компиляции и компоновки отдельных модулей (и аналогичных многофайловых программ) для создания конечной .ЕХЕ программы. Проще всего предоставить проделать все это Turbo С:
tcc cfillstr cfill.asm/*первый модуль - cfillstr.c*/
Если используется Borland C++, надо ввести следующую команду (заменить bсс на tсс для Turbo C++):
bcc cfillstr.с cfill.asm