Easy Code - Assemblador visual

Entorn visual de desenvolupament en llenguatge assemblador

Disponible en versió de 32 i 64 bits

Versió 2.1 (revisió 2)


Les versions 2.00.0.0012 i posteriors també inclouen una versió de 64 bits de l'Easy Code. Si esteu treballant en un sistema Windows de 64 bits, podeu executar el fitxer "EasyCode64.exe" (dins la carpeta "\EasyCode\Bin"). Tant la versió de 32 bits ("EasyCode.exe") com la de 64 bits ("EasyCode64.exe") fan servir els mateixos fitxers, per tant, podeu treballar amb qualsevol d'elles sense haver de fer el més mínim canvi.

Si teniu qualsevol dubte durant la lectura d'aquest fitxer d'ajuda, i per a una major comprensió del mateix, si us plau consulteu els diversos exemples de la carpeta "\EasyCode\Examples", que han estat dissenyats amb propòsits didàctics.

INTRODUCCIÓ

L'Easy Code 2 és l'evolució de la versió 1 (totalment compatible) especialment dissenyat per a generar aplicacions Windows de 64 bits, i que dóna suport als assembladors ASMC, FASM, GOASM, JWASM, UASM-HJWASM, MASM i POASM, versions de 32 i 64 bits.

L'Easy Code 2 és una aplicació que només pot executar-se en Windows XP i sistemes posteriors, i no funciona a cap versió del Windows prèvia a l'XP. La programació d'aquest IDE s'ha dut a terme amb els Windows XP, VISTA, 7 i 8, però funciona correctament en qualsevol sistema operatiu comercialitzat posteriorment (Windows 8.1, 10).

IMPORTANT: L'Easy Code 2 treballa SEMPRE en mode Unicode per tal de donar suport a tots els idiomes. Tantmateix, atès que alguns assembladors només accepten text ANSI, el text de totes les finestres i/o mòduls pot ser enviat al compilador convertit a ANSI o no, en funció de l'opció Codificació del text de la secció Configuració. Aquest format permet programar aplicacions Unicode d'una manera ràpida i fàcil (vegeu el tòpic Aplicacions ANSI / Unicode). En tots dos modes, ANSI o Unicode, l'editor de codi i tots els noms i fitxers relacionats amb els projectes (noms i fitxers de projectes, recursos, finestres i controls) es desen sempre en text Unicode. Això fa que els projectes generats amb l'Easy Code 1 s'hagin de convertir al format de la versió 2 i, per tant, després de la conversió ja no poden ser carregats amb la versió 1. Per això, l'EC demana la confirmació pertinent abans de fer la conversió.
.

AGRAÏMENTS

Héctor A. Medina Sense la seva excel·lent i incansable ajuda, l'Easy Code 2 no hauria estat possible.
Brandon B. Stewart Per provar/evaluar l'Easy Code 2 en profunditat, informar d'alguns errors i corregir el fitxer d'idioma en anglès.
Steve Hutchinson Per provar/evaluar l'Easy Code 2.
Wayne Radburn Per provar/evaluar l'Easy Code 2 i fer algunes coreccions al fitxer d'ajuda en anglès.
Jason Jiang Per traduir el fitxer d'idioma al xinès (ambdós, tradicional i simplificat).
C0dr4cK Per traduir el fitxer d'idioma al turc.


ALGUNS CANVIS IMPORTANTS

Hi ha alguns canvis importants al compilador Masm de 64 bits (ml64.exe) que s'han de tenir en compte:

Per tal de solventar el segon punt, el meu bon amic Héctor A. Medina ha desenvolupat la directiva equivalent ECInvoke per als projectes Masm de 64 bits. ECInvoke és una petita obra d'art, està integrada dins l'EC, i funciona perfectament bé. No sobreescriu cap registre i se'n cuida de mantenir sempre el registre Rsp aliniat a 16 bytes, evitant així molestos bloquejos de l'ordinador. ECInvoke també està disponible per als assembladors AsmC, JWasm, UAsm i PoAsm de 64 bits, tot i que és aconsellable utilitzar el seu propi Invoke quan sigui possible. Per a més informació, vegeu Utilització d'ECInvoke.

El tercer punt no permet fer una crida Near dins d'un procediment com sí que es podia fer en 32 bits (Call / Retn). Per tal de solventar-ho, una vegada més l'Héctor A. Medina ha desenvolupat dos pseudo-opcodes integrats dins l'Easy Code, CallR i RetR, que funcionen igual que Call i Retn respectivament. Per a més informació, si us plau consulteu el tòpic CallR / RetR.

Els projectes Unicode del GoAsm es comporten de manera lleugerament diferent de com ho feien a l'Easy Code 1, és a dir, funcionen igual que els projectes Unicode del Masm. Si tenen marcada l'opció Aquest projecte s'executarà en mode Unicode (Windows NT o posterior), a les Propietats del projecte, canviaran automàticament a ANSI quan s'executin en un Windows 95/98/ME. Per a més informació, vegeu el tòpic Aplicacions ANSI / Unicode.

L'Easy Code 1 cridava els mètodes
FindChar i FindCharRev amb un CHAR (Byte) per projectes ANSI i un WCHAR (Word) per projectes Unicode com a segon paràmetre. Ara tots dos s'han de cridar amb un paràmetre DWord per projectes de 32 bits i un paràmetre QWord per projectes de 64 bits. Cal que tingueu això molt en compte, especialment quan convertiu projectes de l'Easy Code 1, atès que passar un tipus erroni com a segon paràmetre farà que el mètode tingui una adreça de retorn incorrecta i l'aplicació que el crida probablement es bloquejarà.

Les macros Text i TextAddr sempre tornaven text ANSI a l'Easy Code 1. Ara, igual que TextStr, tornen text ANSI o Unicode depenent de si l'opció Aquest projecte s'executarà en mode Unicode, a les Propietats del projecte, està marcada o no. Us hauríeu d'acostumar a utilitzar aquestes dues macros tal com funcionen ara per als nous projectes creats amb l'Easy Code 2, però si heu importat un projecte de l'Easy Code 1, i aquest canvi pot afectar seriosament el seu funcionament, marqueu l'opció Activa la compatibilitat amb les macros de l'Easy Code 1.x, a les Propietats del projecte, i les macros Text i TextAddr es comportaran de la mateixa manera que ho feien a l'Easy Code 1. Si el projecte importat no era Unicode, o no feia servir cap d'aquestes dues macros, aquesta opció no té cap efecte i convé deixar-la desmarcada.

OBSERVACIONS: L'opció Activa la compatibilitat amb les macros de l'Easy Code 1.x només està disponible per als projectes MASM de 32 bits per tal que les macros Text i TextAddr es comportin tal com ho feien a l'Easy Code 1. Aquesta opció només té sentit per als projectes Unicode MASM de 32 bits importats de versions anteriors a l'Easy Code 2.0. Els nous projectes creats amb l'Easy code 2 haurien d'ignorar aquesta opció i deixar-la desmarcada.


QUANT AL WINDOWS 8.1 / WINDOWS 10

Quan copieu fitxers o instal·leu programes a la majoria de carpetes del disc del sistema C: d'aquestes dues versions del Windows, el sistema canvia els permisos en reiniciar la màquina de manera que l'usuari no les pot escriure normalment. Per exemple, si després de descomprimir el programa EC el copieu a C:\EasyCode i reinicieu la màquina, el Windows 8.1/10 canvia els permisos d'escriptura d'aquesta carpeta i de totes les seves subcarpetes i fitxers. Això forma part de les mesures de seguretat extesa d'aquests dos sistemes operatius, però suposa un obstacle per als programes que escriuen dades als fitxers de configuració i altres tipus de documents. D'acord amb això, és molt recomanable que tingeu com a mínim dos discos (o un disc amb dues particions) i feu servir el segon disc (D:, F:, G:, o qualsevol altra lletra que li hàgiu assignat) per copiar-hi la carpeta EasyCode. D'altra banda, la carpeta on deseu els projectes tampoc NO HAURIA D'ESTAR al disc C:.

Tantmateix, si encara voleu fer servir el disc C:, o no en teniu cap altre, podeu posar les propietats del fitxer “EasyCode.exe” a “Executa com a Administrador”, o moure la carpeta "EasyCode" a “C:\Usuaris\<NomUsuari>\AppData\EasyCode”, on totes les aplicacions tenen permisos d'escriptura, i modificar els fitxers de configuració d'acord amb la nova ruta.

D'altra banda, tenir una encriptació de 128 bits a la vostra política de grup pot comportar que alguns executables de 64 bits no puguin executar-se i que l'Easy Code es tanqui. Si teniu problemes en executar els fitxers de 64 bits relacionats amb la generació de projectes (compilador, enllaçador, i compiladors de recursos i llibreries de tots els assembladors utilitzats), poseu les propietats de tots els fitxers afectats per a que se executin com a administrador. Si us plau llegiu el fitxer FAQSAndTips.txt dins la carpeta EasyCode.


ASSEMBLADORS SUPORTATS

Aquesta secció és una petita guia per saber les eines que es necessiten per a cada assemblador suportat. Lògicament, no cal que les tingueu totes si no voleu, però almenys haureu de tenir les eines del(s) assemblador(s) amb el(s) que vulgueu treballar. Per simplicitat, totes les rutes (paths) que es mostren tot seguit es refereixen a l'arrel del disc C:\, però hauríeu de fer servir qualsevol altre disc o ruta, fins i tot un USB (jo tinc totes aquestes eines a l'arrel del disc G:\). Com s'ha dit abans, NO es recomana fer servir el disc del sistema C:, especialment amb el Windows 8.1 i el Windows 10, a causa de la restricció de permisos.


ASMC

C:\ASMC         (descarregueu el conjunt d'eines AsmC)


FASM

C:\FASM         (descarregueu el Flat assembler for Windows)


GOASM

C:\GOASM      (descarregueu el conjunt d'eines ECGo.zip)


JWASM

C:\JWASM      (descarregueu el conjunt d'eines JWasm.zip)


UASM    (es recomana la carpeta JWASM)

C:\JWASM      (versions de 32 i 64 bits disponibles aquí)


MASM32

C:\MASM32    (descarregueu el MASM32 SDK versió 10 o posterior)


MASM64

C:\MASM64    (disponible amb el Microsoft Visual Studio)


POASM

C:\POASM     (descarregueu el PellesC 32-bit)


POASM64

C:\POASM64  (descarregueu el PellesC 64-bit)


OBSERVACIONS IMPORTANTS

Després de descomprimir el conjunt d'eines d'asmc s'haurà creat la carpeta asmc-master. Si us plau canvieu-li el nom per AsmC i tingueu present que la subcarpeta bin és l'única que necessita l'Easy Code, per tant, podeu eliminar totes les altres subcarpetes si voleu.

Després de descomprimir el conjunt d'eines ECGo.zip s'haurà creat la carpeta GoAsm. Si us plau descarregueu immediatament les GoAsm Headers i poseu-les a la subcarpeta Include (dins de la carpeta GoAsm que s'haurà creat en descomprimir l'ECGo.zip). Altrament, l'Easy Code no podrà generar projectes GoAsm.

Després de descarregar i instal·lar el Microsoft Visual Studio, creeu una nova carpeta amb el nom de MASM64 i copieu-hi tots els fitxers necessaris relacionats amb l'assemblador MASM de 64 bits (ml64.exe, link.exe, lib.exe, rc.exe i les seves dependències).

Després de descarregar i instal·lar el PellesC 32-bit en un sistema de 32 bits, creeu una nova carpeta amb el nom de POASM i copieu-hi tot el contingut de la carpeta C:\Program Files\PellesC\Bin.

Després de descarregar i instal·lar el PellesC 64-bit en un sistema de 64 bits, creeu una nova carpeta amb el nom de POASM64 i copieu-hi tot el contingut de la carpeta C:\Program Files\PellesC\Bin.

Després de descarregar el UASM (versions de 32 i 64 bits), jo us recomanaria posar-los a la carpeta JWASM, atès que allà hi ha altres fitxers necessaris, com ara jwlink.exe, però podeu crear una carpeta específica per al UASM si així ho desitgeu. D'altra banda, l'Easy Code 2.01.0.0002 i versions posteriors també inclouen fitxers de configuració específics per al UASM de 32 i 64 bits, per tant, si poseu el uasm32.exe i el uasm64.exe a la carpeta JWASM, els vostres fitxers de configuració del UASM poden ser una còpia dels del JWASM, atès que només heu de canviar jwasm.exe per uasm32.exe (a UAsm.cfg) o uasm64.exe (a UAsm64.cfg).

Per aplicacions de 32 bits, el GOASM utilitza les Go tools i les GoAsm Headers, totes elles a la carpeta GoAsm creada amb l'ECGo.zip. Els ASMC, JWASM, UASM, MASM i POASM fan servir els fitxers include i library del MASM32 (C:\MASM32), i el FASM fa servir els seus fitxers include i equate (C:\FASM\INCLUDE) més alguns fitxers include de la carpeta \EasyCode\Include\Fasm, especialment programats per al FASM. A més, el FASM necessita que el MASM32 SDK estigui instal·lat per poder generar projectes visuals de 32 bits (es necessiten els fitxers ".lib" del MASM32 SDK).

Per aplicacions de 64 bits, el FASM i el GOASM fan servir els mateixos fitxers que fan servir per a 32 bits (amb algunes diferències per al FASM), mentre que els ASMC, JWASM, UASM, MASM i POASM fan servir els fitxers include i library de les carpetes \EasyCode\Include\Masm\x64 i \EasyCode\Lib\x64, respectivament, que han estat especialment programats per a aplicacions de 64 bits.

L'Easy Code es distribueix amb uns fitxers de configuració, un per a cada assemblador suportat. Aquests fitxers (a la carpeta EasyCode\Config) tenen l'extensió "ori" i serveixen de referència per tal de configurar l'assemblador corresponent. Tantmateix, cada assemblador necessita un fitxer de configuració amb l'extensió "cfg" per tal de funcionar correctament, però quan es descarrega l'Easy Code 2 no hi ha cap fitxer ".cfg". Tots aquests fitxers de configuració es crearan quan l'Easy Code s'executi per primera vegada i es trobaran a la carpeta EasyCode\Config. Per a més informació, si us plau vegeu l'apartat Configuració.

Si la vostra versió actual de l'Easy Code 2 és anterior a la 2.00.0.0007 (2 de desembre del 2015), si us plau seguiu les instruccions del fitxer Fasm.txt, dins la carpeta EasyCode.

El FASM no té un enllaçador (linker) propi i els projectes visuals necessiten enllaçar la llibreria visual de l'Easy Code. Per tant, per tal que l'Easy Code pugui generar projectes visuals amb el FASM, s'utilitza l'enllaçador de Microsoft link.exe (NOMÉS per als projectes visuals del FASM). Si voleu generar projectes visuals amb el FASM (tots els exemples són projectes visuals), cal que descarregueu i instal·leu el MASM32 SDK (per als projectes visuals de 32 bits) i el MASM64 (per als projectes visuals de 64 bits).

Davant la falta de documentació per generar drivers WINNT (*.sys) amb el jwlink.exe (JWasm) i el linkw.exe (AsmC) s'utilitza l'enllaçador de Microsoft link.exe (NOMÉS als projectes driver del JWasm / UAsm / AsmC).

El compilador de recursos wrc.exe que ve amb el JWasm pot funcionar malament amb alguns projectes (per exemple, els drivers de 64 bits enllaçats amb link.exe). Si és així, proveu d'afegir el switch -zm a la seva línia d'ordres, o simplement utilitzeu el compilador de recursos rc.exe de Microsoft.

Els compiladors de recursos dzrc.exe i iddc.exe que venen amb l'AsmC no sembla que puguin generar el fitxer de recursos .res que necessita l'Easy Code, per tant, es fa servir el compilador rc.exe de Microsoft. Aquest és el compilador que s'indica als fitxers de configuració predeterminats de l'AsmC (AsmC.ori i AsmC64.ori).

AVÍS: El MASM32 SDK disponble actualment (masm32v11r) té alguns errors als fitxers kernel32 i kernel32p que fan que l'enllaçador (link.exe) generi errors. Per tal de solventar aquest problema, si us plau descarregueu aquest fitxer i seguiu les instruccions del fitxer Readme.txt.


CONFIGURACIÓ

Aquesta és la part més important de la posta en marxa inicial de l'Easy Code per tal d'evitar problemes i fer que funcioni correctament per a tots els assembladors suportats. La configuració de les rutes (paths) correctes i les opcions de la línia d'ordres per a cada assemblador, enllaçador (linker), i compilador de recursos y llibreries, porta una mica de temps i requereix ser curós.

Ara, si us plau executeu el fitxer EasyCode.exe (a la carpeta EasyCode\Bin), o feu un doble clic damunt la icona de l'escriptori si heu triat crear-ne una durant el procés d'instal·lació. Llavors aneu al menú Eines-->Configuració i feu clic en aquest enllaç per tal de començar a configurar l'Easy Code.


PROGRAMACIÓ EN 64 BITS

L'Easy Code es distribueix amb alguns fitxers include i llibreria (localitzats a les carpetes \EasyCode\Include\Masm\x64 i \EasyCode\Lib\x64, respectivament) especialment fets per a la programació d'aplicacions de 64 bits dels ASMC, JWASM, UASM, MASM i POASM (el FASM i el GOASM utilitzen altres fitxers). Tot i que aquests fitxers són suficients per a generar la majoria d'aplicacions, és possible que algunes aplicacions més específiques necessitin altres fitxers include i llibreria. Si és així, us agraïré la vostra col·laboració. Si us plau escriviu el fitxer include necessari, envieu-me'l, i jo generaré el fitxer llibreria corresponent per tal que tots dos puguin ser distribuïts a les pròximes versions de l'Easy Code. D'aquesta manera podrem anar ampliant entre tots les possibilitats de l'Easy Code. Moltes gràcies.

La programació en 64 bits no és tasca fàcil i requereix conèixer a fons com treballen els sistemes operatius Wndows de 64 bits. Per tal de fer-vos una idea molt bàsica, si us plau vegeu el tòpic Programant aplicacions de 64 bits.



ESCRIVINT CODI AMB L'EASY CODE

Per tal que l'Easy Code pugui manejar els procediments, constants i variables correctament, i així evitar errors en generar els projectes, si us plau tingueu en compte les consideracions que s'expliquen en aquest enllaç.


INICIANT L'EASY CODE

Si executeu l'Easy Code sense cap nom de projecte a la seva línia d'ordres, us apareixerà un quadre de diàleg per tal de crear un projecte nou. D'altra banda, qualsevol paràmetre a la línia d'ordres que no tingui una extensió ".ecp", ".ecw", ".ecr" o ".asm" serà ignorat i també farà aparèixer el quadre de diàleg que es mostra tot seguit:

Hi ha vuit opcions disponibles segons el tipus de projecte:

Fitxer executable visual (exe)
Fitxer executable clàssic (exe)
Llibreria dinàmica clàssica (dll)
Llibreria estàtica clàssica (lib)
Aplicació de consola clàssica (exe)
Fitxer objecte COFF clàssic (obj)
Driver NT clàssic (sys)
Servei NT clàssic (exe)

L'Easy Code té dos modes principals, el "Projecte Visual" i el "Projecte Clàssic". El mode clàssic és el més tradiconal i conegut, on el programador escriu el codi de tot el projecte i el configura manualment per tal que funcioni després de compilar-lo i enllaçar-lo com a la majoria dels IDE's. El mode visual és on l'Easy Code destaca per ell mateix i es converteix en únic. Aquest mode us permet crear tota mena de finestres, controls i recursos del Windows per tal de programar una potent i complexa aplicació d'una manera molt ràpida i fàcil.

El projecte Fitxer objecte COFF clàssic és útil per tal de generar un fitxer objecte, d'un o més mòduls, que després es pot enllaçar amb altres projectes. Aquesta opció evita haver de generar lliberies estàtiques (.lib) si no us agrada, i només genera un fitxer .obj (en format COFF) tot i que hi hagi diversos mòduls al projecte. El fitxer objecte generat tindrà el nom del projecte més l'extensió .obj.

Quan es crea un projecte nou cal especificar el tipus de fitxer final que es desitja. Les "Llibreries dinàmiques", "Llibreries estàtiques", "aplicacions de consola", "fitxers objecte", "drivers" i "serveis" són considerats projectes clàssics de manera natural. Només quan trieu un fitxer "Executable", tindreu l'opció de generar un projecte tradicional (clàssic) o un projecte visual de l'Easy Code.

Si voleu utilitzar els 'Windows Common controls' i/o el control 'Rich edit', marqueu el quadre de verificació corresponent i els seus fitxers .inc i .lib seran afegits al projecte per l'Easy Code (només en el cas dels 'Common controls'). D'altra banda, marcant/desmarcant aquests quadres, es mostraran o s'amagaran els botons corresponents a la caixa d'eines.

El quadre de verificació Manifest (només disponible per als projectes Fitxer executable visual, Fitxer executable clàssic i Llibreria dinàmica clàssica) indica si s'ha de crear i incloure el fitxer necessari per activar els nous "common controls" als sistemes Windows XP i posteriors (vegeu Activant els temes XP). Si aquest quadre està marcat quan es crea el projecte, el fitxer Manifest.xml apareixerà dins del node "Manifest" de l'Explorador del projecte, per tal que pugui ser editat a l'entorn de l'Easy Code. Si us plau, llegiu atentament el tòpic Incloent un Manifest al projecte.

El quadre de verificació Macros de l'Easy Code, a les Propietats del projecte, indica si les macros que venen amb l'Easy Code (a la subcarpeta Macros) s'han d'incloure al projecte o no.


AFEGIR FITXERS ALS PROJECTES

Es recomana que no s'utilitzin les directives Include, #Include, IncludeLib o #DynamicLinkFile dins del codi font per afegir fitxers als projectes. En lloc d'això, tots els fitxers que es necessitin per un projecte s'haurien d'afegir amb les corresponents opcions del menú Projecte. Altres fitxers, include (*.inc), header (*.h) o library (*.lib), que no siguin cap dels fitxers predeterminats que fa servir l'assemblador o l'enllaçador, s'haurien de copiar a la carpeta del projecte i llavors afegir-los amb l'opció de menú Projecte-->Afegeix fitxers.


SUB-TÒPICS

Configurant l'Easy Code
Escrivint el codi correctament
Programació de serveis NT
Programació de controladors NT (drivers)
Fitxers de configuració específics (fitxers INI)

Projectes visuals (mode potent de l'Easy Code)
Projectes clàssics (estil tradicional de l'IDE)
Propietats del projecte

Configurant Option win64:n

Controlant les excepcions (només projectes visuals)

Configurant altres fitxers d'ajuda

Accedint a la funció 'WinMain' del Windows (només projectes visuals)

Objecte Thread (només projectes visuals)

Afegint "tooltips" als projectes visuals

Suport multillengua
Els fitxers d'idioma (com fer-los)

Aplicacions ANSI / Unicode (només projectes visuals)

Incloent un Manifest al projecte (només projectes exe)

Activant els temes XP (tots els projectes)

Propietat "OwnerDraw" (només projectes visuals)

Compilació condicional (tots els projectes)

Processant el temps "idle" (només projectes visuals)

Objectes Control
Propietats dels objectes (només projectes visuals)
Llegint i escrivint propietats (només projectes visuals)
Personalitzant objectes (només projectes visuals)

Recursos - Editor de Recursos (tots els projectes)
Importació de fitxers de recursos (tots els projectes)
Icona de l'aplicació (tots els projectes)

Editor de l'Easy Code
Editor de Menús (tots els projectes)

Objecte App (només projectes visuals)

Macros de l'Easy Code (tots els projectes)

Mètodes de l'Easy Code (només projectes visuals)
Constants de l'Easy Code (només projectes visuals)


L'Easy Code és completament gratuït. Gaudïu-lo i feu grans i bones aplicacions en assemblador. Si us plau notifiqueu qualsevol error o problema que trobeu en aquest IDE. Quan notifiqueu algun problema intenteu explicar com ha succeït per tal de poder corregir-lo el més aviat possible (si adjunteu un projecte de mostra, molt millor). Estaré encantat de respondre personalment a través del correu electrònic.


SUPORT TÈCNIC

Per a qualsevol dubte, suport tècnic o notificació d'errors, si us plau adreceu--vos a una de les adreces electròniques indicades. Gràcies.

assembly@easycode.cat
rsala@easycode.cat

http://www.easycode.cat

Copyright © 2004-2017 Ramon Sala
Col·laborador: Héctor A. Medina

L'aplicació Easy Code de 32 bits ha estat desenvolupada amb el MASM32 SDK v11 (Macro Assembler de 32 bits de Microsoft)
L'aplicació Easy Code de 64 bits fou desenvolupada amb el compilador JWASM
A partir de la versió 2.01.0.0001, s'ha desenvolupat amb el compilador UASM64