News:

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

Should I make the switch

Started by MusicalMike, January 20, 2006, 11:56:33 PM

Previous topic - Next topic

MusicalMike

When POAsm comes out, is it recomended that I switch over from MASM?

hutch--

Mike,

At the moment you can live with both as they are near identical in normal code. The macros will end up different but apart from that the object module format is the same, you can use either linker, either resource compiler and get good results. Pelle's assembler is shaping up already as a very good tool, the native unicode support is a big win, the amount of data you can use is far larger and unproblematic to use and it is a developing 64 bit assembler as well.
Download site for MASM32      New MASM Forum
https://masm32.com          https://masm32.com/board/index.php

MusicalMike

The one thing that looks good is the auto detection of externals.

PBrennick

I guess the point, here, is that since the object module format is the same, that from this point on, the only differences will be in the macro support via the preprocessor so to answer the question, 'should I make the switch' it will be only a matter of personal taste in macros so 'no one' can answer that question for you.

EDIT:  auto detection of externals, you are correct on that one!

Paul
The GeneSys Project is available from:
The Repository or My crappy website

MusicalMike

If this new product works out, perhaps hutch will dump ml.exe; and use POASM.

PBrennick

Perhaps, but first Hutch will do some serious testing of it, he is very dependable that way so you can be sure that if he makes the switch, you can trust his decision.

Paul
The GeneSys Project is available from:
The Repository or My crappy website

MusicalMike

Ofcourse hes dependable, he was (perhaps still is) a well reguarded programming major. He and randyll hyde are like legends within the circle of people who do nothing but code assembly (as few as they are). The problem is Microsoft is trying to target people who want to code the high level stuff, eg C#, VB.net, etc. Lets just face it, Microsoft doesn't care about low level programmers. When 64 bit processors are main stream, ml.exe will serve nothing more than as a component in the visual c++ compiler. (Sort of like right now, but to a greater extent). In any event, it would be nice to be using an origonal product. With this in mind, I really do think hutch should use poasm in his package as apposed to ml.exe, but its still his choice. One things for sure, if he does use poasm, hes going to have to rename MASM32 to something else. Its his decision, but I would seriously hope that this logic would be obvious to him.

hutch--

 :bg

Mike,

I will let you in on a little secret, I have been at this stuff for a long time and I long ago learnt not to enter into the area of vapourware. I also don't try to predict the future and prefer to work in the present to effect the future where it can be meaningfully changed.

In the short term the action has been in helping Pelle get the new assembler up and going as it has been a massive amount of work to do this and he deserves the support of programmers for having done so. In case anyone has missd it, I have been plugging Pelle's tools for a couple of years now for the most obvious reason, they are technically very good and deliver superior results when used properly.

The next stage in the development is to produce the correct support for POASM, I have a later set of include files up and going and will have to shortly start editing the master software I use for the creation of the WINDOWS.INC file because POASM is more strict than MASM. The big interest in the pre-processor capacity is to be able to produce enough macros to make POASM easy enough to use at the entry level and so far this has shaped up very well.

About the only thing slowing me up at the moment is the script engine I am working on that I need for code generation, templates and similar. I already have a couple of weeks work done on it and it appears to developing in the direction I need.
Download site for MASM32      New MASM Forum
https://masm32.com          https://masm32.com/board/index.php

Mark Jones

Hi, is there an EULA for POASM? I've been wondering if POASM can use the full MASM syntax legally without stepping on a derivative copyright. Hutch and Pelle probably know the MASM EULA better than any of us so this is probably a moot question. Great work Guys! :)
"To deny our impulses... foolish; to revel in them, chaos." MCJ 2003.08

hutch--

Mark,

I serious doubt its an issue as the syntax is historical Intel syntax and it has been used by many over time so it is not unique to MASM or POASM. Intel have long ago stopped producing an assembler and they have never complained about anyone using their historical syntax format as it supports their hardware so I would not lose any sleep over it.
Download site for MASM32      New MASM Forum
https://masm32.com          https://masm32.com/board/index.php

Manos

I agree with hutch--.
Words and expressions are not a trademark.

Manos.

MusicalMike

If I wasn't tied up with school, Id love to help with the project myself. One thing that would be nice is if I don't have to configure pelles linker based on what dirrectory I install it in in order to use the assembler. Thankfully, this can be accomplished with a simple batch file. As for the macros. I would like it if there was an option view the asm code after the peprocessor has processed all the macros, if nothing else just to see how they work. For instance, it is sad but true that people don't realize the fastest way to do a memory to memory move opperation is to push the value on to the stack and then pop it to the destination. I have looked at plenty of code containing constructs like...

mov eax, srclbl
mov dstlbl, eax

Then ofcourse, there are people like me who can't sleep unless they know everything about everything thats done behind the scenes. Another thing that would be nice is the option for different syntaxes. For example, GAS allows you to switch between intel, and AT&T syntax. Though I hate the later option, Id still include it for good measure. Another thing I would really like to see is a linux implimentation of goasm. Right now, the only assemblers for linux are GAS, FASM, and NASM. (And a few others from obscure sources that are not supported). They are nice, but I am not used to them. I could go on for ever, but my lunch break will be over soon and I need to get back to class. Anyway, these are just ideas, and since I am not working on the project, those who it may concern may choose to use or disreguard it.

zooba

Quote from: MusicalMike on January 24, 2006, 05:42:15 PM
For instance, it is sad but true that people don't realize the fastest way to do a memory to memory move opperation is to push the value on to the stack and then pop it to the destination. I have looked at plenty of code containing constructs like...

mov eax, srclbl
mov dstlbl, eax

Had to check this myself as I prefer the 'mov eax, .../mov ..., eax' form (except with my super-move macro its 'move dest, eax, src' :U) so I did some simple tests.

.data
    value1 DWORD 0BADF00Dh
    value2 DWORD 0h

Algo1 MACRO
  REPEAT 8
    mov eax, value1
    mov value2, eax
  ENDM
ENDM

Algo2 MACRO
  REPEAT 8
    push value1
    pop  value2
  ENDM
ENDM


Results:
EAX (1) = 195948557 (0BADF00Dh)
Clock Cycles (1): 15

EAX (2) = 19 (00000013h)
Clock Cycles (2): 19


So the first is faster, though it uses eax (I tried with all registers and the results are the same) but with suitable macros you can easily select which register to use. Note that EAX in the second is the same as the clock cycle count - ordinarily it would obviously not change :U

Mark Jones

Many things affect the speed of code execution. What works fast on one processor might dog out on another. If you look in the Laboratory there is some code to measure time in high resolution, and a thousand or more posts about optimizing code. :)

Weren't we talking about switching to POASM? :8)
"To deny our impulses... foolish; to revel in them, chaos." MCJ 2003.08