JWasm, l'avenir assuré de Masm pour le 32/64 bits

Voir le sujet précédent Voir le sujet suivant Aller en bas

JWasm, l'avenir assuré de Masm pour le 32/64 bits

Message  faiseur le Ven 14 Mai - 1:48

Petit historique des faits

Beaucoup de programmeurs étaient soucieux de l'avenir de Masm. En effet, Masm n'a plus été mis à jour depuis longtemps par Microsoft. Bien que cela n'était pas vraiment nécessaire car Masm était devenu LA référence et ne souffrait pas de vrai défaut, l'arrivée du 64 bits a changé la donne. Masm32 ne permet pas de compiler un projet pour un système 64 bits.

Il y a quelques années de cela Microsoft a proposé une nouvelle version de Masm permettant de compiler du code en 64 bits. Mais cette version n'est pas prévue pour les développeurs en assembleur. Cette version a été amputé de tout ce qui a fait la richesse de Masm en programmation assembleur: impossible de se servir de macros ou de fonctions de haut niveau telles que IF-ENDIF par exemple. Autrement dit il est bon à jeter sauf pour les utilisateurs de Visual Studio, il a été conçu pour eux (utiliser l'assembleur dans un projet C++ par exemple).

Alors qu'une partie de la communauté commençait à se tourner vers la concurrence, Fasm ou encore GoAsm, voilà-t-il pas qu'un petit génie a concocté dans son coin, au départ pour lui-même et quelques programmeurs appréciant la syntaxe de Masm, un compilateur entièrement compatible avec Masm et offrant la possibilité de compiler le code sur 64 bits ! Avec le temps sa compatibilité a été portée jusqu'aux macros de Masm, ce qui a certainement été un énorme travail de la part de son auteur...sans compter qu'il corrige des bugs propres à Masm et se permet le luxe d'apporter de nouvelles compatibilités (SSE4) et d'être plus rapide.

Chapeau bas donc au sieur en question et dévoilons sans plus attendre l'heureux bébé: JWasm.

Pour installer JWasm c'est simple, vous pouvez consulter ce tutoriel.

Jwasm reconnaît les syntaxes de commande de Masm et aucune retouche ne sera nécessaire dans vos projets (sauf exceptions particulières).


Site de l'auteur (Japheth)

http://www.japheth.de/JWasm.html


Caractéristiques principales de JWasm

JWasm is a free MASM-compatible assembler with these features:

* native support for output formats Intel OMF, MS Coff (32- and 64-bit), Elf (32-and 64-bit), Bin and DOS MZ.
* precompiled JWasm binaries are available for DOS, Windows and Linux. For OS/2 and FreeBSD, makefiles are supplied.
* Instructions up to SSE4.2 are supported.
* JWasm is written in C. The source is portable and has successfully been tested with Open Watcom, MS VC, GCC and more.
* As far as programming for Windows is concerned, JWasm can be used with both Win32Inc and Masm32. Since v2.01, it will also work with Sven B. Schreiber's ancient WALK32.
* C header files can be converted to include files for JWasm with h2incX.
* JWasm's source code is released under the Sybase Open Watcom Public License, which allows free commercial and non-commercial use.


Dernière édition par faiseur le Ven 25 Juin - 12:47, édité 2 fois

faiseur
Admin

Messages: 371
Date d'inscription: 02/05/2010

Voir le profil de l'utilisateur http://www.asmforum.net

Revenir en haut Aller en bas

Re: JWasm, l'avenir assuré de Masm pour le 32/64 bits

Message  sp0ke le Jeu 20 Mai - 21:59

Salut , Smile

Ha ça c'est une bonne nouvelle bounce moi qui justement ne voulais pas passer en 64bit et pour cause.
Là je vais pourvoir me lancer sur un autre pc. Cool
Bravo à l'auteur de ce travail qui a du être titanesque. cheers

@++

sp0ke

Messages: 23
Date d'inscription: 20/05/2010

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: JWasm, l'avenir assuré de Masm pour le 32/64 bits

Message  Grincheux le Ven 21 Mai - 19:54

J'avais aussi des réticences pour passer à la programmation "64 bits" mais avec ce site je pense que je franchirai le pas rapidement. Sinon, il restait l'excellent GoAsm de J Gordon qui est aussi une référence. La syntaxe de GoAsm étant assez loin de celle utilisée par Masm, cela me rebutait de devoir apprendre un autre assembleur. GoAsm

Grincheux

Messages: 247
Date d'inscription: 17/05/2010
Age: 52
Localisation: Mathenay (39), France

Voir le profil de l'utilisateur http://phrio.biz

Revenir en haut Aller en bas

Re: JWasm, l'avenir assuré de Masm pour le 32/64 bits

Message  faiseur le Ven 21 Mai - 20:04

Pour ma part j'ai remplacé ml.exe dans mes projets par JWasm.exe depuis 4 semaines sans soucis. Japhet a vraiment fait un boulot incroyable... Je ne sais pas comment le remercier ce gars (je veux lui envoyer des fleurs Cool ), il est trop discret.

faiseur
Admin

Messages: 371
Date d'inscription: 02/05/2010

Voir le profil de l'utilisateur http://www.asmforum.net

Revenir en haut Aller en bas

Re: JWasm, l'avenir assuré de Masm pour le 32/64 bits

Message  faiseur le Ven 25 Juin - 12:43

Mercredi 23/6/2010 la version 2.03 de JWasm est sortie, considérée comme instable par l'auteur.

http://www.japheth.de/JWasm.html

Changelog:


Changelog

__/__/2010, v2.03:

Bugfixes:
- invalid cmdline option behind source filename caused a GPF.
- expressions in a data field initializer were evaluated when the
structure was instanced. This gave incorrect results or assembly
errors if the expression contained an assembly time variable
( including $ ).
- INVOKE directive: if register EAX|RAX was used for indirect addressing
of a parameter, there was no check if the content of the register has
been overwritten previously due to an ADDR operator.
- INVOKE directive, 64-bit: if a parameter beyond the first four was an
address which had to be loaded into register RAX to store it onto the
stack, the generated source was either invalid or a GPF occured.
- TYPEDEF directive: pointer definitions did use the default size for
data pointers, which isn't correct if the pointer is defined as a
function pointer and memory model is COMPACT or MEDIUM.
- 64-bit: assembly time variables or immediate operands with a value
magnitude > 32 bits were rejected.
- macro expansion: expansion operator at the start of a line and more
than one macro function call within this line might have resulted
in garbage.
- DUP operator: count (first operand) was rejected if it was a string.
- float initializer in BSS segments wasn't rejected.
- OMF format: when a listing was to be written (-Fl) and a large array
was defined, a GPF might have occured.
- error 'Symbol redefinition' occured if an equate's expression contained
another equate which was the result of a subtraction of 2 labels AND
a phase error caused this difference to change.
- comments weren't displayed in listing.
- in v1.96-2.02, if cmdline option -mf was set, the cpu wasn't
automatically set to a 386 as it was done before.
- format COFF: symbols defined as weak externals were created as normal
externals if the EXTERN directive was used for the definition.
- 64-bit: opcodes MOVSXD and CQO (both 64-bit) were missing.
- 64-bit: opcode CDQE was encoded without the REX prefix, thus it was
a CWDE in fact.
- 64-bit: QWORD type coercion for an immediate operand didn't force the
operand's size to 64-bit.
- 64-bit: MOVs with a segment register as operand didn't accept 64-bit
registers as the other operand ("mov ds, rax").
- 64-bit: SLDT, SMSW and STR didn't accept 32- and 64-bit registers as
operand.
- a displacement which didn't fit into 32-bits caused error 'Constant
value too large' in versions 2.00 - 2.02. This has been changed to a
warning (level 3) in 16- and 32-bit. In 64-bit code, it is still an
error.
- In expressions, types combined with the open (square) bracket operator
( "mov eax, DWORD [ebx] ) weren't rejected.
- comparisons of TYPE expressions did compare the type's size only.

Other changes:
- OW v1.9 used to create the JWasm binaries.
- opcode RDTSCP supported.


faiseur
Admin

Messages: 371
Date d'inscription: 02/05/2010

Voir le profil de l'utilisateur http://www.asmforum.net

Revenir en haut Aller en bas

Re: JWasm, l'avenir assuré de Masm pour le 32/64 bits

Message  toutenmasm le Ven 10 Sep - 17:50

Salut,
Il me semble que quelques erreurs sur masm ce sont glissées dans le poste original.


Beaucoup de programmeurs étaient soucieux de l'avenir de Masm. En effet, Masm n'a plus été mis à jour depuis longtemps par Microsoft. Bien que cela n'était pas vraiment nécessaire car Masm était devenu LA référence et ne souffrait pas de vrai défaut, l'arrivée du 64 bits a changé la donne. Masm32 ne permet pas de compiler un projet pour un système 64 bits.

La derniere version de masm est la 10.00.30319.01 fournit par le c++ express 10.0
La prochaine version sera surement dans visual studio.
Pour le 64 bits , le module est fourni régulièrement par les SDK qui se sont succéder ces dernières années.
ToutEnMasm




toutenmasm

Messages: 12
Date d'inscription: 10/09/2010

Voir le profil de l'utilisateur http://luce.yves.pagesperso-orange.fr/

Revenir en haut Aller en bas

Re: JWasm, l'avenir assuré de Masm pour le 32/64 bits

Message  faiseur le Ven 10 Sep - 18:28

Je corrige, merci Toutenmasm. En passant, j'ai vu quelque part dans le Masmforum que quelqu'un a développé des macros pratiques pour se servir de boucles IF-ENDIF et d'autres fonctions haut niveau avec Masm 9 ou 10. Les macros seraient donc utilisables avec les nouvelles versions de Masm, ce que je ne savais pas.





_________________
Site perso: http://www.faiseur.net/

faiseur
Admin

Messages: 371
Date d'inscription: 02/05/2010

Voir le profil de l'utilisateur http://www.asmforum.net

Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut

- Sujets similaires

Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum