64 bit Windows

From wiki.visual-prolog.com

Jump to: navigation, search

Visual Prolog 7.4 is the first version of Visual Prolog that is able to generate 64 bit programs (Commercial Edition only), making it possible to write programs that exploit more of the computers resources.

In 64 bit Windows each process can address up to 8 TB memory. This is more than 4000 times as much as the 2 GB that a 32 bit Windows process can at most address.

Contents

Single Source

A main goal of Visual Prolog 64 bit support is that it should be possible to create both 32 bit and 64 bit programs from a single source project, without conditional compilation, except in very rare cases.

Therefore PFC has been updated to support both platforms from a single source base.

A few old packages will not support for the 64 bit platform, and have instead been superceded by new replacement packages. So existing projects will first have to migrate to these new replacement packages.

  • vpiEditor is superceded by sciLexer, based on the scintilla editor.
  • regExp is superceded by regEx, based on Boost RegEx.

See Visual Prolog 7.4 Upgrade Notes for additional information about upgrading existing projects.

Project target

In the project settings you select which platforms your project should target:

  • 32 bit
  • 64 bit
  • 32 bit + 64 bit

This setting will be 32 bit for old/existing projects, and by default it will be 32 bit + 64 bit for new projects.

But you can change the setting in the project settings at any time.

Work target

If your project targets both platforms you can choose the "work target" in the Built menu and the toolbar.

The work target decides the target for Compile, Build, Debug, Run, etc.

Notice that you can Compile and Build 64 bit programs on a 32 bit machine, but you cannot Debug or Run them.

In the Build menu there are also entries for building and rebuilding both platforms in a single step.

Debugging

Behind the scenes 64 bit programs are debugged in a different way than 32 bit programs, but to the programmer things look the same. If all the 32 most significant bits of a pointer are zero, the debugger will write the address as a 32 bit pointer.

Personal tools