Форум программистов, компьютерный форум CyberForum.ru

тригонометрия - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
Artishok
ЧакЭ одобряЭ
 Аватар для Artishok
277 / 276 / 32
Регистрация: 27.12.2009
Сообщений: 1,767
23.03.2011, 23:54     тригонометрия #1
ну собственно программа вызывает функцию на ассемблере,которая вызывает 2 функции на си.результат выводит функцию которую вызывали(то есть та что на асме).
вроде код на асме должен работать.но visual studio ругается на sin и на cos!ей не нравятся целочисленные аргументы.что не так?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
// лаба_ОС.cpp : Defines the entry point for the console application.
//
 
#include "stdafx.h"
#include "math.h"
#include <iostream>
 
using namespace std;
 
extern int _stdcall Addproc(int,int,int,int);
extern int _cdecl _Sinus(int a,int b)
{
    return ((int)sin(a+b));
}
extern int _fastcall _Cosinus(int a,int b,int c,int d)
{
    return ((int)cos(a+b*c+d));
}
 
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    int k=Addproc(2,3,4,5);
    printf(" Result: %d\n",k);
    return 0;
}
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
.686
.model flat
 
Public Addproc@16
extern _Sinus:proc
extern syscall @_Cosinus@16:proc
 
.data
.code
 
Addproc@16 proc
 push ebp
 mov ebp,esp
 push DWORD PTR [ebp+12]
 push DWORD PTR [ebp+8]
 call _Sinus
 add esp,8
 mov ebx,eax
 mov ecx,DWORD PTR [ebp+8]
 mov edx,DWORD PTR [ebp+12]
 push DWORD PTR [ebp+20]
 push DWORD PTR [ebp+16]
 call @_Cosinus@16
 add eax,ebx
 pop ebp
 ret 16
Addproc@16 endp
end

Не по теме:

вроде как есть ассемблер но проблема связана с с++

Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.03.2011, 23:54     тригонометрия
Посмотрите здесь:

Тригонометрия
тригонометрия
C++ Тригонометрия
Тригонометрия
Тригонометрия
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
23.03.2011, 23:58     тригонометрия #2
Цитата Сообщение от Artishok Посмотреть сообщение
но visual studio ругается на sin и на cos!
сконверти в дабл
Artishok
ЧакЭ одобряЭ
 Аватар для Artishok
277 / 276 / 32
Регистрация: 27.12.2009
Сообщений: 1,767
24.03.2011, 00:25  [ТС]     тригонометрия #3
аргумент сконвертил в double.теперь ругается на stdcall.ну да ладно.
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
24.03.2011, 00:58     тригонометрия #4
если мне не именяет память, то должно быть двойное подчеркивание __stdcall

Добавлено через 1 минуту
__cdecl __fastcall
Artishok
ЧакЭ одобряЭ
 Аватар для Artishok
277 / 276 / 32
Регистрация: 27.12.2009
Сообщений: 1,767
24.03.2011, 01:19  [ТС]     тригонометрия #5
а все равно ругается
1>лаба_ОС.obj : error LNK2001: unresolved external symbol "int __stdcall Addproc(int,int,int,int)" (?Addproc@@YGHHHHH@Z)
Yandex
Объявления
24.03.2011, 01:19     тригонометрия
Ответ Создать тему
Опции темы

Текущее время: 13:57. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru