News:

MASM32 SDK Description, downloads and other helpful links
MASM32.com New Forum Link
masmforum WebSite

E^cube's GoAsm questions

Started by ecube, March 30, 2009, 04:22:12 AM

Previous topic - Next topic

ecube

alright great thankyou, I thought you met a special switch in the include


set INCLUDE=C:\GoAsm\include
\GoAsm\bin\GoAsm /x64 /l Prodll.asm
\GoAsm\bin\GoLink Prodll.obj /dll /entry DllEntry user32.dll kernel32.dll
pause


that seems to build my dll from any dir, fantastic!


set INCLUDE=C:\GoAsm\include
\GoAsm\bin\GoAsm /x64 testlib.asm
\GoAsm\bin\polib /MACHINE:AMD64 /OUT:COOL.lib /VERBOSE testlib.obj
pause


works for makin the static lib :)

donkey

Hi E^Cube,

If you're using the header files, use the LINKFILES switch and the dll imports are handled automatically, no need to specify the dll's on the command line. In your source (before windows.h)

#DEFINE LINKFILES

Without this a large application can have a pretty unmanageable command line, if you have 20 or so different import DLLs it can be a nightmare.
"Ahhh, what an awful dream. Ones and zeroes everywhere...[shudder] and I thought I saw a two." -- Bender
"It was just a dream, Bender. There's no such thing as two". -- Fry
-- Futurama

Donkey's Stable

ecube

very nice! I was going to ask about that but I forgot. Once Jeremy adds .if etc.. supports i'm going to make a SDK like masm has for GoASM, with all the latest tools, your includes, lots of nice looking static lib, exe, dll, com explains with invoke etc.. might even translate all of masm32lib's code. You and Jeremy have done great things with this project but most people have no idea how fantastic it is, and theres no up to date SDK anywhere so it's hard to tell people about it without being confusing, download this from there, and that from here. Can't even find the latest stuff on GoASM's site, which is a shame.

donkey

Hi E^cube,

The credit is all Jeremy's, he has created the best assembler I have seen and is constantly upgrading it based on the user base's needs and wish list. When I started using GoAsm there was only modest structure support, no libs, no intrinsic Unicode, macro capability was severely limited, in other words none of the features that make it as powerful as it is now. However, even then you could see its potential and I wrote the first RadAsm implementation for it and never looked back. A year or two ago I decided that the MASM32 formula of one giant include file was not the right approach, Microsoft's splitting of headers by functionality is a much better system and I started the header project with the goal of following the documentation at MSDN/PSDK closely. None of the headers would have a chance of working if Jeremy hadn't diligently worked to adapt GoAsm to the needs of the project, expanding functionality where necessary.

Edgar
"Ahhh, what an awful dream. Ones and zeroes everywhere...[shudder] and I thought I saw a two." -- Bender
"It was just a dream, Bender. There's no such thing as two". -- Fry
-- Futurama

Donkey's Stable

ecube

Well he's done a fantastic job, it's clear he's a gifted programmer, as are you. I was worried with MASM being weak in the 64bit world, JWASM authors abandoning us, my complete dislike of nasm and minimal interest in fasm that Assembly could be dead for me inregards to 64bit. I was getting so desperate I even dusted off a x86 ASM compiler source I have written in visual basic, that has minimum win api support, know full well writing my own assembler would be a daughtening task that I would struggle greatly with. I'm glad Jeremy decided to create GoASM and continues to work on it, if I use in a major commerical project which I may very well, i'll be sure to compensate via donation or what have you.

donkey

Hi E^cube,

FYI, I worked on a test tonight of using the type defs from the header project in a real application. I discovered a bug in GoAsm when declaring multiple structures in a LOCAL but that aside I redid Help2 Viewer using header types and it worked perfectly. This type of usage will make transitioning to 64 bit much smoother, you can use the headers data types and when you define WIN64 the sizes of all declarations, both local and global will be adjusted accordingly. The only thing left for you to fix up is registers and a few other minor patches. I am not uploading the version of Help2 Viewer as there is an incomplete module in it but here's a few samples:

idCurrent DWORD32 ?

DoubleClickTimer DWORD32 ?
SysDblClkTime DWORD32 ?

Namespace CHAR MAX_STRINGLEN DUP (?)
szTitle CHAR MAX_STRINGLEN DUP (?)
nNamespaces DWORD32 ?

// This null BSTR is used for calls that require one
pbszNULL PTR ?

// WebBrowser stuff
hWeb HANDLE ?


SingleInstance FRAME pMutexString
uses ebx,edi,esi
LOCAL pid :%PTR
LOCAL hwnd :%HANDLE
LOCAL pCommandLine :%PTR
LOCAL hProcess :%HANDLE
LOCAL pRemoteMem :%PTR
LOCAL cbWritten :%DWORD32
LOCAL pPath :%PTR
LOCAL pAppPath :%PTR
LOCAL pArg1 :%PTR
LOCAL pArg2 :%PTR


Seems to work great, it will be even better when I can declare multiple local structs.

Edgar
"Ahhh, what an awful dream. Ones and zeroes everywhere...[shudder] and I thought I saw a two." -- Bender
"It was just a dream, Bender. There's no such thing as two". -- Fry
-- Futurama

Donkey's Stable