Open Watcom Reflections 2012-11-19

From Open Watcom

Jump to: navigation, search

New Target Initiatives

To meet the expanding needs of Windows 7 & 8, Unix, and Android system users, we have started two new projects to develop target support for the ARMv7 and AMD64 cpu architectures. Our initial tools will be command line based and will require the use of an external linker and librarian. We hope to speed application development with this approach. For ARMv7, we will be resurrecting and modifying one of the legacy Open Watcom RISC tool chains. For AMD64, we will proceed in steps, starting first by modifying the 80386 code generator. If you are programming in 64 bit assembly language, you will need to use an external assembler as well. In time, a more general release of Open Watcom tools will follow that will be both command line and IDE based and will be fully self contained. An enhanced assembler will also be released towards the end of the initiative. During this interim development period, we are recommending that users make use of Japheth's assembler JWASM, linker JWLINK, and debugger CDBA. These tools are available on Japheth's website http://www.japheth.de. The goal of the initiative will be to evolve the entire Open Watcom tool chain, the assembler, all the compilers, and the IDE to include ARMv7 and AMD64 support. Since assembly language programming issues will be paramount, we have started a new newsgroup "openwatcom.users.assembler" to focus much of the discussions. Please resync your newsreader to add this forum. With all the plans in work, year 2013 is shaping up to be very interesting and active for us all. If you're interested in ARMv7 and AMD64 or are wanting to contribute, please let us know. There's plenty of work to go around. I've included the text below for the announcements recently posted in the contributors forum.

ARMv7 Target

I'd like to introduce a new effort to develop target support for the ARMv7 architecture. We'll be resurrecting one of the Open Watcom RISC tool chains (i.e. AlphaAPX, PowerPC, or MIPS) making modifications for ARMv7 according to the Open Watcom porting guide. This can be found on the website at address:

http://www.openwatcom.org/index.php/Porting_Guide

As described in the porting guide, we will proceed as follows:

1). Write a disassembler

2). Port the debugger

3). Port the assembler

4). Port the C front end

5). Port the codegen

6). Port the clib

7). Port the linker

8). Run (and pass) tests

9). Continue porting the C++ and F77 compilers and other tools

In addition, I would also like to add an ARM simulation environment so programs can be compiled and debugged on a local Intel x64 machine without a remote debugger or external emulator.

Eventually, the project will allow end users to develop applications for ARM based Linux, Andriod, Windows CE, and Windows 8 systems. There are also many new ARM applications just over the horizon, such as for OS X and DOS.

Since much of the initial work will involve the disassembler, debugger, and assembler, a new newsgroup has been started for assembler issues. This is "openwatcom.users.assembler". These tools will be command line based for quite some time. Since the project may make use of external tools during part of the development, **we ask that all project and external tool related issues be discussed in the Open Watcom forums.** This will allow us to track the issues and more easily provide support. I'd like encourage all of you to get involved. Much more discussion will be needed as we proceed with development and testing. For now, I'll keep things short. Hope to see you soon in Android land.

AMD64 Target

I'd like to introduce a new effort to develop target support for the AMD64 architecture. The plan will involve developing the needed support in stages, initially relying on newly developed Open Watcom command line tools and other external tools. This will get users started developing 64 bit applications while much of the tool development is underway. In time, we will evolve the remaining command line tools and all the IDE tools to support AMD64. Here is how I would like to proceed:

1). 64 bit Assembler - Initially, we would like for these users to get started with Japheth's 64 bit assembler JWASM, linker JWLINK, and debugger CDBA. These can be downloaded from Japheth's website http://www.japheth.de. You will end up using these tools for most of the initiative. We intend to enhance the Open Watcom assembler WASM with 64 bit instructions and improved Microsoft and Watcom compatibility support, but this will be done after all the other tools have been updated. The goal will be to allow you to revert back to using Open Watcom tools with minimal effort if you choose to do so. The enhanced WASM assembler will also be supported both on the command line and by the IDE and will be maintained in Perforce. In support of this effort, we have opened a new newsgroup "openwatcom.users.assembler" exclusively for assembler issues. **We ask that you direct all discussion of assembler and external tool related issues to the Open Watcom forums so we may best track issues and provide support.** We will also be using Japheth's tools initially in our development and testing process.

2). C/C++/F77 Compilers - The first step will be to modify the 80386 code generator to add 64 bit instruction and vector arithmetic opcode support, in addition to adding OWL (Object Writer Library) library support so that ELF or COFF object files can be generated. This will allow the Open Watcom command line compilers to generate 64 bit object files that can be linked with an external 64 bit linker such as JWLINK. This initial effort will not include IDE support. ** Again, we ask that you direct all discussion of compiler and external tool related issues to the Open Watcom forums. **

3). 64 bit tool chain - The next step will be to update the Open Watcom tool chain (IDE, WLINK, WDW, WRC, WLIB etc) to support 64 bit opcodes and the OWL and ORL (Object Reader Library) libraries, thus enabling support for both OMF, ELF, and COFF object files. This will allow C/C++/F77 users to compile, link, and debug 64 bit programs using both the Open Watcom command line tools and the Open Watcom IDE. Modifications to the Open Watcom linker WLINK will also include support for the 64 bit Microsoft Windows PE+ format. At this point, the Open Watcom inline and standalone assembler WASM will still be limited to 16 and 32 bit instructions.

4). Enhanced 64 bit Assembler - Lastly, we will add 64 bit instruction and vector arithmetic opcode support, OWL (Object Writer Library) library support for ELF and COFF object files, and enhanced Microsoft and Watcom compatibility support to the Open Watcom stand alone and inline assembler WASM. These updates will be available via the command line and via the IDE.

This is an ambitious but workable plan to get us into a 64 bit environment. We will rely initially on Japheth's 64 bit tools that are available at http://www.japheth.de. The 64 bit Open Watcom tools will initially be command line based, then will eventually be supported by the IDE. A fully enhanced 64 bit Open Watcom assembler will be available towards the end of the initiative. End user support will be coordinated through the Open Watcom forums. This is a sketch of how I would like to proceed with AMD64. Much discussion and refinement will be needed as we move forward with development and testing. I encourage all of you to get involved. For now, I'll keep things short hoping to see you soon on the 64 bit horizon.

Interesting Links

Significant hardware and software developments for the ARM architecture are just over the horizon. Here are a few links of interest highlighting some of the recent product announcements. If you know of others, please let me know so I can post them.

HW:

http://www.arm.com/products/processors/cortex-a50/index.php

http://www.nvidia.com/object/tegra-3-processor.html

http://www.nvidia.com/object/visual-computing-module.html

http://www.zdnet.com/blog/apple/rumor-apple-dumping-intel-for-arm-processors-in-2013/10093

http://www.androidauthority.com/ipad-mini-vs-nexus-7-129732

SW:

http://blogs.msdn.com/b/b8/archive/2012/02/09/building-windows-for-the-arm-processor-architecture.aspx

http://getwired.com/2011/09/20/win32-the-reports-of-my-death-are-greatly-exaggerated

http://www.reactos.org/wiki/ARM_Port

http://wiki.winehq.org/ARM

http://www.debian.org/ports/arm

Regards,

Marty Stanquist

Maintainer, Open Watcom Project

Personal tools