Реферат: Взаимосвязь языков 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

К-во Просмотров: 483
Бесплатно скачать Реферат: Взаимосвязь языков C и ассемблера