🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.asm
Article #1923

Re: Visual Studio 2008 (C++ oraz DLL w asmie) Interpolacja

#1923
From: MrokU
Date: Tue, 26 May 2009 00:45
201 lines
8305 bytes
A czy wiecie może, co może być skutkiem nagłej zmiany w Windowsach i
wysypu błędów?

Bo w pewnym momencie coś się VS odwidziało i kod, który się normalnie
kompilował, nagle wyrzuca coś takiego (dla pewności kompilowany kod):


-----------------------------------------------------------------------------------------------------------------
C++
#include <windows.h>
#include <stdio.h>
#include <iostream>

#define PI 3.1415926535897932


typedef int (__stdcall *MYPROC)(int, int);
typedef float (__stdcall *MYPROC2)(float);

MYPROC ProcAdd, ProcSub;
MYPROC2 ProcSin;
HINSTANCE hinstLib;
int a, b;
float d;

int main(int argc, char* argv[])
{
        hinstLib = LoadLibrary ("DLLint.dll");//ladowanie biblioteki
        if (hinstLib == NULL)//sprawdzenie, czy moduł faktycznie
został załadowany
                return 1;

        ProcAdd = (MYPROC) GetProcAddress(hinstLib, "sumuj");
        if (NULL != ProcAdd)
                a = (ProcAdd)(9,2);

        ProcSub = (MYPROC) GetProcAddress(hinstLib, "odejmuj");
        if (NULL != ProcAdd)
                b = (ProcSub)(2,9);

        ProcSin = (MYPROC2) GetProcAddress(hinstLib, "sinus");
        if (NULL != ProcAdd)
                d = (ProcSin)(PI / 6);  // sinus 30 stopni

        FreeLibrary(hinstLib);
        std::cout << a << std::endl;
        std::cout << b << std::endl;
        std::cout << d << std::endl;

        system("PAUSE");
        return 0;
}
-----------------------------------------------------------------------------------------------------------------
ASM
.586
.387

.MODEL FLAT, STDCALL

OPTION CASEMAP:NONE

INCLUDE    .\masm32\include\windows.inc;
INCLUDE    .\masm32\include\user32.inc
INCLUDE    .\masm32\include\kernel32.inc
INCLUDELIB .\masm32\lib\user32.lib
INCLUDELIB .\masm32\lib\kernel32.lib

.DATA
.CODE

DllEntry PROC hInstance:HINSTANCE, reason:DWORD, reserved1:DWORD
    mov  eax, TRUE
    ret
DllEntry ENDP

;***************************************************************
;****** Procedura testowa ***** dodawanie

sumuj PROC a: DWORD , b: DWORD
        pushad
        mov eax, a
        add b, eax
        popad
        mov eax, b
        ret            ;koniec funkcji
sumuj ENDP

;***************************************************************
;****** Procedura testowa ***** odejmowanie

odejmuj PROC a: DWORD , b: DWORD
        pushad
        mov eax, a
        sub b, eax
        popad
        mov eax, b
        ret            ;koniec funkcji
odejmuj ENDP

;***************************************************************
;****** Procedura testowa ***** HARDCORE - sinus()

sinus PROC kat:DQ
        pushad
        finit
        fld     kat                     ; wczytanie zmiennej do
rejestru st0
        fsin
        fst kat
        popad
        mov eax, kat
        ret            ;koniec funkcji
sinus ENDP

END DllEntry
-----------------------------------------------------------------------------------------------------------------
DEF
LIBRARY DLLint
EXPORTS sumuj
EXPORTS odejmuj
EXPORTS sinus
-----------------------------------------------------------------------------------------------------------------
KOMPILACJA:
1>------ Rebuild All started: Project: interJA, Configuration: Debug
Win32 ------
1>Deleting intermediate and output files for project 'interJA',
configuration 'Debug|Win32'
2>------ Rebuild All started: Project: DLLint, Configuration: Debug
Win32 ------
2>Deleting intermediate and output files for project 'DLLint',
configuration 'Debug|Win32'
2>Assembling...
1>Compiling...
1>main.cpp
2> Assembling: .\DLLint.asm
2>.\DLLint.asm(1) : error A2044: invalid character in file
2>.\DLLint.asm(2) : error A2008: syntax error : .
2>.\DLLint.asm(4) : error A2008: syntax error : .
2>.\DLLint.asm(6) : error A2008: syntax error : P
2>.\DLLint.asm(8) : error A2109: only white space or comment can
follow backslash
2>.\DLLint.asm(10) : error A2109: only white space or comment can
follow backslash
2>.\DLLint.asm(12) : error A2109: only white space or comment can
follow backslash
2>.\DLLint.asm(14) : error A2109: only white space or comment can
follow backslash
2>.\DLLint.asm(16) : error A2109: only white space or comment can
follow backslash
2>.\DLLint.asm(19) : error A2008: syntax error : .
2>.\DLLint.asm(20) : error A2008: syntax error : .
2>.\DLLint.asm(22) : error A2008: syntax error : l
2>.\DLLint.asm(23) : error A2008: syntax error : m
2>.\DLLint.asm(24) : error A2008: syntax error : r
2>.\DLLint.asm(25) : error A2008: syntax error : D
2>.\DLLint.asm(30) : error A2008: syntax error : u
2>.\DLLint.asm(31) : error A2008: syntax error : p
2>.\DLLint.asm(32) : error A2008: syntax error : m
2>.\DLLint.asm(33) : error A2008: syntax error : a
2>.\DLLint.asm(34) : error A2008: syntax error : p
2>.\DLLint.asm(35) : error A2008: syntax error : m
2>.\DLLint.asm(36) : error A2008: syntax error : r
2>.\DLLint.asm(37) : error A2008: syntax error : s
2>.\DLLint.asm(42) : error A2008: syntax error : d
2>.\DLLint.asm(43) : error A2008: syntax error : p
2>.\DLLint.asm(44) : error A2008: syntax error : m
2>.\DLLint.asm(45) : error A2008: syntax error : s
2>.\DLLint.asm(46) : error A2008: syntax error : p
2>.\DLLint.asm(47) : error A2008: syntax error : m
2>.\DLLint.asm(48) : error A2008: syntax error : r
2>.\DLLint.asm(49) : error A2008: syntax error : o
2>.\DLLint.asm(54) : error A2008: syntax error : i
2>.\DLLint.asm(55) : error A2008: syntax error : p
2>.\DLLint.asm(56) : error A2008: syntax error : f
2>.\DLLint.asm(57) : error A2008: syntax error : f
2>.\DLLint.asm(58) : error A2008: syntax error : f
2>.\DLLint.asm(59) : error A2008: syntax error : f
2>.\DLLint.asm(60) : error A2008: syntax error : p
2>.\DLLint.asm(61) : error A2008: syntax error : m
2>.\DLLint.asm(62) : error A2008: syntax error : r
2>.\DLLint.asm(63) : error A2008: syntax error : s
2>.\DLLint.asm(65) : error A2008: syntax error : E
2>.\DLLint.asm(65) : error A2088: END directive required at end of
file
2>Project : error PRJ0019: A tool returned an error code from
"Assembling..."
1>c:\documents and settings\ala\desktop\interja\interja\main.cpp(33) :
warning C4305: 'argument' : truncation from 'double' to 'float'
2>Build log was saved at "file://c:\Documents and Settings\Ala\Desktop
\interJA\DLLint\Debug\BuildLog.htm"
2>DLLint - 44 error(s), 0 warning(s)
1>Compiling manifest to resources...
1>Linking...
1>LINK : C:\Documents and Settings\Ala\Desktop\interJA\Debug
\interJA.exe not found or not built by the last incremental link;
performing full link
1>Embedding manifest...
1>Build log was saved at "file://c:\Documents and Settings\Ala\Desktop
\interJA\InterJA\Debug\BuildLog.htm"
1>interJA - 0 error(s), 1 warning(s)
========== Rebuild All: 1 succeeded, 1 failed, 0 skipped ==========
Technical Details
Message-ID: <566ac0c2-3a69-4666-bb32-c4504478ad0a@h23g2000vbc.googlegroups.com>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!news.nask.pl!news.nask.org.pl!goblin1!goblin.stu.neva.ru!postnews.google.com!h23g2000vbc.googlegroups.com!not-for-mail
References: <29a4a4e4-9913-4afa-ba78-63b3168b1c91@r34g2000vbi.googlegroups.com> <gvb3au$aha$1@inews.gazeta.pl> <gvcsv7$9li$1@inews.gazeta.pl> <gvedsf$b66$1@inews.gazeta.pl> <gvf1jg$qsf$1@inews.gazeta.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!news.nask.pl!news.nask.org.pl!goblin1!goblin.stu.neva.ru!postnews.google.com!h23g2000vbc.googlegroups.com!not-for-mail
From: MrokU <arkosmc@gmail.com>
Newsgroups: pl.comp.lang.asm
Subject: Re: Visual Studio 2008 (C++ oraz DLL w asmie) Interpolacja
Date: Mon, 25 May 2009 17:45:06 -0700 (PDT)
Organization: http://groups.google.com
Lines: 208
Message-ID: <566ac0c2-3a69-4666-bb32-c4504478ad0a@h23g2000vbc.googlegroups.com>
References: <29a4a4e4-9913-4afa-ba78-63b3168b1c91@r34g2000vbi.googlegroups.com>  <gvb3au$aha$1@inews.gazeta.pl> <gvcsv7$9li$1@inews.gazeta.pl>  <gvedsf$b66$1@inews.gazeta.pl> <gvf1jg$qsf$1@inews.gazeta.pl>
NNTP-Posting-Host: 83.230.1.175
Mime-Version: 1.0
X-Trace: posting.google.com 1243298707 23668 127.0.0.1 (26 May 2009 00:45:07 GMT)
X-Complaints-To: groups-abuse@google.com
NNTP-Posting-Date: Tue, 26 May 2009 00:45:07 +0000 (UTC)
Complaints-To: groups-abuse@google.com
Injection-Info: h23g2000vbc.googlegroups.com; posting-host=83.230.1.175;  posting-account=M89B8goAAADtNGu6YLcVvvVDLG2z3LY8
User-Agent: G2/1.0
X-HTTP-UserAgent: Mozilla/5.0 (Windows; U; Windows NT 6.0; pl; rv:1.9.0.10)  Gecko/2009042316 Firefox/3.0.10 (.NET CLR 3.5.30729),gzip(gfe),gzip(gfe)
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit