-
13.03.2012
Mike Wall concentrates upon the aspect of optimizing and boosting performance of code during porting. Starting with an explanation of AMD64 architecture's advantages, the author discusses several methods of increasing code's performance including use of compiler switches, intrinsic functions, assembly and many more. In addition he also describes advantages of using CodeAnalyst tool when optimizing the code. In the article you will find some useful examples of code.
-
14.02.2012
In his post, Bruce Dawson explains what technique he and his Valve team use to find and fix 64 bits related pointer truncation bugs. A code sample is taken as an example.
-
11.01.2012
The article explains the differences between 32-bit and 64-bit systems from the viewpoint of the entire system structure consisting of three components or levels: CPU, operating system and applications. The basic principles of architectural arrangement are explained, and the common questions about 32-bit and 64-bit systems are addressed.
-
30.11.2011
The WOW layer present in the 64-bit Windows and the redirection mechanism it employs causes troubles for IT-security tests. The article explains the nature of these troubles and tells how to adapt existing analysis tools to handle this issue.
-
06.10.2011
The author uses a sample code to show how to set compiler and linker options to build a C++ application for 64-bit Windows. Each step is commented upon.
-
06.09.2011
This post describes the stack frame layout of the x64 architecture focusing mainly on Linux and other operating systems that follow the official System V AMD64 ABI. The author gives diagrams and code samples to show the specifics of stack frame layout on the x64 platform.
-
19.04.2011
The article presents a large research on the TDSS family of malware programs and consists of three parts each of which describes certain aspects of the TDSS rootkits and bootkits, including internals of the malware, mechanisms of rootkit distribution, specifics of bootkit installation on various systems (x86 and x64) and embedding into the bootsector. The processes of infecting the system are described in detail and illustrated by plenty of tables, schemes and figures.
-
17.06.2010
Since 32-bit applications are still popular and are actively used on 64-bit systems, it is good to know some typical issues of the Windows 32-bit on Windows 64-bit layer (WOW64). The paper concerns issues related to limitations of WOW64, mechanisms of registry redirection and registry reflection, file system redirection mechanism, references to files and variables, binding to 32-bit and 64-bit DLLs, application installation and startup and kernel-mode drivers. In the related sections, the author tells how to avoid these problems. The paper also demonstrates some techniques of handling 32-bit and 64-bit applications on WOW64. At the end you will find a brief list of best practices to stick to when working with 32-bit programs on WOW64.
-
21.12.2009
Processor and cache topology information is important to manage various processor practices such as task scheduling, performance optimization, licensing policy enforcement and so on. The paper discusses the principle of processor topology enumeration algorithm and specifics of its implementation in the IntelĀ® 64 architecture processor. The author also touches upon cache topology enumeration. The paper has some illustrative schemes and an appendix for the examples.
-
08.10.2009
This large section on Microsoft Corporation site provides programmers with many papers and notes on various topics related to using 64-bit versions of Microsoft Windows, 64-bit programming, 64-bit platforms and other related subjects. You will find many useful tips and guidelines on how to work on a 64-bit system with a 64-bit version of Windows.
-
01.10.2009
The paper focuses on the issues of data alignment applying to IPF, x86 and x64 and covers all basic alignment faults. The author explains how data alignment is organized, how to avoid alignment issues and what to do when it is impossible. In the end of the article, he gives a brief list of tips on how to deal with alignment issues as a summary of the article's content. The text is accompanied with graphs and code samples.
-
05.09.2009
In the world of rapidly developing programming technologies it is important for all software developers to decide what standard and programming model to choose as universal to save time and money. The Open Group argues that LP64 programming model be the best solution for 64-bit programming. This conclusion is drawn from the results of analysis and comparison of ILP64 and LP64 models against several evaluation criteria, each being thoroughly commented and explained. Among these the authors list portability, interoperability with 32-bit environments, standards conformance, performance effects and transition costs.
-
03.08.2009
A very large and solid article devoted to two topics: x64 architecture and Windows Vista. According to these topics the paper is divided into two main sections. The first section is devoted to x64 and explains the basic principles of the architecture's assembly, C/C++ programming for it, WOW64 operation, interprocess communication and many other aspects relating to this topic. The second section devoted to Windows Vista deals with operation principles of and improvements in this operating system, as well as various tools and security mechanisms, some issues relating to using Visual Studio environments etc. There is also one more section describing .NET Framework 3.0 technology and interfaces that supply it.Although this article is far from being exhaustive, it can serve a very cool source for those programmers who are mastering x64 architecture and Windows Vista. Its pluses are in its accessible and lively manner and a great number of code samples and illustrative screenshots.
-
26.07.2009
This paper is a presentation covering most aspects of porting 32-bit code to Windows running on AMD64 platform and includes several sections: AMD64 technology concerning some features of this architecture, 64-bit Windows for AMD64, porting issues, maximizing multiprocessor performance and recommendations on tools and additional resources. Each section includes schemes illustrating this or that feature and theses to be considered. The main plus of this paper is a concise character of description allowing coverage of many really important things.
-
05.07.2009
The article "64-bit ODBC" provides detailed information on using 64-bit ODBC on 64-bit Linux, Unix and Windows platforms. Thanks to thorough introduction into the sphere of 64-bit and clear description of the basic principles of 64-bit technology and its advantages over 32-bit one, this paper can serve as a good manual for every user who wants to know how to manage 64-bit ODBC. The authors give detailed instructions on using various ODBC drivers on 64-bit Linux, Unix and Windows platforms illustrating them with good examples. Besides, the paper contains the FAQ section covering the most urgent issues and questions of using 64-bit ODBC.
-
04.07.2009
Those programmers who are planning to convert their projects created in Microsoft Visual Studio environments for 64-bit Microsoft Windows on AMD64 processors but face some problems now have a good opportunity to realize their plans: the article "Configuring Microsoft Visual Studio Projects to Support the AMD64 Architecture" provides the necessary information. It begins with an overview of tools for AMD64 by Microsoft and continues to give detailed instructions and tips on configuring such Microsoft Visual Studio environments as MVS 6, MVS .NET and MVS "Whidbey" to work with the AMD64 command-line tools. Besides, there is a separate section devoted to debugging AMD64 applications. The article contains a lot of illustrative screenshots.
-
17.06.2009
Although this paper is not of prescriptive character, it will be useful for many developers facing the task of porting 32-bit managed code to 64-bits. Beginning with a brief explanation of managed code's working principles in a 32-bit environment, the article describes issues of porting this code to a 64-bit environment from the viewpoint of several aspects: using platform invoke, COM interoperability, unsafe code, marshalling and serialization. When describing each aspect, some recommendations and code samples are given.
-
12.06.2009
The paper is divided into two parts: "Introduction to 64-bit programming" and "64-bit programming in practice". In the first part you will find description of the basic differences between 32-bit and 64-bit executables, Win32 and Win64 and x86 and x64 processors from the viewpoint of AMD64 and EM64T processors running on 64-bit Windows. The second part concerns various practical aspects of 64-bit programming and conversion of 32-bit code to 64-bit, such as change of data types, alignment requirements, using Windows structures in 64-bit programming, choice of register and so on, including optimization and refinement issues. This section provides crucial instructions and recommendations on accurate 64-bit programming. Pay attention that the task of 64-bit programming is viewed in this paper within the framework of using GoAsm, GoRC and GoLink, however, developers using other tools will find it interesting too.
-
08.06.2009
Written in a humorous manner, this blog-note is intended to cross the t's and dot the i's what memory management is concerned. To those programmers who have false ideas about this process and mix up notions "physical memory", RAM and "virtual memory" Eric Lippert explains the tricks of memory operation and actual causes of "out of memory" error.
-
21.05.2009
If you are creating 64-bit software for 64-bit AMD processors, you will find this article really valuable. Its general purpose is to discuss issues of using Microsoft Platform Software Development Kit - a toolkit intended for developing 64-bit applications for AMD64. There are three chapters: the first chapter touches upon technical preliminaries and background for using this toolkit; the second describes the procedures of building applications using Microsoft Visual Studio .NET on a Windows 32-bit development system; the third describes the use of the Platform SDK for building or porting applications using Microsoft Visual Studio 6. Each chapter provides a detailed algorithm of installing and configuring the necessary tools.
-
18.05.2009
This paper touches upon the task of portion an application to 64-bit Linux installed on HP Integrity servers. It includes many sections describing the basic issues the programmer might face during the port. For example, such issues are discussed as endianism, standard type definitions, pointer assignments, bit shifting and many others. The paper also includes a brief list of tools to aid the programmer in the process of porting (Intel C++ Compiler, GCC, GDB, DDD, Splint). The text is supplied with many tables and code samples for a better understanding.
-
13.04.2009
A very brief note on porting 32-bit code to 64-bit that concerns some issues developers should pay attention to (use of data types different in 32-bit and 64-bit modes) and gives a couple of tips on using printf modifier.
-
12.04.2009
Migration of code to 64-bit platforms involves specific issues related to changes of sizes of base types and their interaction. Irving Rabin explains in his article what most basic and crucial problems might occur during porting and how to solve them using static analysis tools to make code architecture-independent. The author touches upon such problems as changes of sizes of pointers and long type, casting between pointers and integers, padding issues and some others. The article gives recommendations and rules on dealing with them and discusses static analysis based approaches which might be used for each case.
-
12.03.2009
The paper is devoted to the type size_t and its appropriate use. Within the framework of the paper, the author touches upon the problem of portability and explains how to use size_t to improve portability, efficiency and readability of the code you want to port.
-
03.03.2009
This article considers issues of porting 32-bit source code to 64-bit environment within the framework of 64-bit Intel architecture. Andrew Binstock touches upon such urgent problems as changing sizes of the base types like pointers, integers and longs on various platforms, porting device drivers and binary portability. The text contains a lot of links to the useful resources devoted to the issues discussed.
-
26.02.2009
Long collaboration between Linux and Intel processors makes it possible to port Linux-applications to the 64-bit Intel Itanium processor nearly painlessly. The article focuses on each step of this process and gives a lot of guidelines concerning various aspects of the port: use of commands, data types, avoiding packing, padding and alignment issues etc. Each guideline is illustrated by code examples.
-
23.02.2009
Written in a somewhat ironical manner, the article explores the reasons for the lack of quality 64-bit software in the rapidly developing world of 64-bit processors. The author cites some famous software developers working in various companies and comes to the conclusion that the main reason for the problem stated is lack of motivation to completely move to 64-bits. The paper will be interesting for all programmers and users dealing with 64-bit computers.
-
12.02.2009
In this note, the author explains how to set Visual C++ 2008 Express Edition to be able to compile applications for 64-bit Windows with its help. The note provides thorough instructions and tips on how to use the compiler's abilities to a full extent. As the author says, though the decision he offers can be rather dangerous, still it is worth applying.
-
23.01.2009
Absence of full support of CPUID instruction by Microsoft Visual Studio .NET 2005 on x64 platforms urged the author of the article to write three samples of code demonstrating a more efficient use of _CPUID and _RDTSC functions in 64-bit mode, supplying them with detailed comments.
-
13.01.2009
This paper covers a wide range of aspects relating to 64-bit programming with Visual C++: it includes a table describing 64-bit compilers for the two x64-based and Itanium-based Windows platforms, overview of the features of Itanium processor, some Visual C++ 64-bit migration issues, tools for migration, changes in C++ libraries and many other things. Most sections contain links to useful resources. There is also a large FAQ section covering a lot of aspects on development on 64-bit Windows.
-
11.12.2008
In this paper, the author touches upon such a specific feature of Visual C++ as use of pseudo variables and format specifiers. Beginning with a brief description of differences between x86 and x64 processor architectures Kenny Kerr gives a list of most useful pseudo variables and describes their functions, in the same way he lists some format specifiers and their purposes. Besides, some examples are given of how you can use pseudo variables and format specifiers in visualizing calling conventions, error codes and debugging the security context.
-
26.10.2008
This note describes the process of building a 64-bit executable using Visual Studio 6 step by step. All in all there are five stages and each is explained in detail. Besides the instructions themselves you will find some useful tips on debugging the ported project and as useful links to more information on the issues of porting to 64 bits.
-
24.08.2008
The article "32-bit pointers in a 64-bit world" touches upon the live issue of efficient use of 32-bit pointers in 64-bit environment with the purpose of performance gain. The author describes the operation principles of 'sptr' function serving for data alignment, and also peculiarities and limitations of its use. The article contains many clear and detailed examples of code to illustrate the mechanisms of encoding 64-bit pointers in 32-bits.
-
15.07.2008
A very useful document providing information on the major issues of creating drivers for 64-bit editions of Windows. It includes preliminary instructions on getting ready to development, technical data concerning data types and memory, tips and guidelines to coding and porting drivers. Many of these are supplied with clear code samples illustrating some of the issues described.
-
11.04.2008
Computer game industry can benefit a lot from moving to 64-bit processors, and Microsoft Game Technology Group decided to provide game-developers with crucial information about porting 32-bit code to 64-bit platforms. The article covers basic issues relating to such aspects as pointer truncation, data types and binary files, older Win32 APIs and data alignment, assembly code and deprecated APIs and some more, and also gives some tips on how to avoid many problems relating to these aspects and increase performance of games.
-
03.11.2007
Although 64-bit processors can provide access to a 64-bit virtual memory address space, today's computers do not yet require this amount. Due to this reason and in order to simplify chip architecture, the AMD64 specification provides support for only 48 bits while Windows's addressing limit is just 44 bits. The author explains how using non-implemented bits in current processors as secondary data may cause unpredicted results and advises you to look ahead and make scalable applications.
-
11.06.2007
Sometimes you might face a situation when you cannot port DLL to a 64-bit system together with the main module but still must have an access to it. This article explains how you can do it using a COM object and describes some things to be considered involved in this task, among them being some issues concerning alignment, data types, COM initialize function, security, performance, redirection process in WOW, kernel modules and setup procedure.
-
17.04.2007
Written in a lively style, the article gives a review of 64-bit technology's advantages over the 32-bit one, and in particular touches upon 64-bit Windows operating systems. There are several sections in the article explaining the main features of 64-bit Windows systems and issues of using them, and also reviewing some 64-bit porting issues and porting guidelines. Despite being brief, the paper provides helpful information about dealing with 64-bit issues. It is also supplied with several interesting code samples.
-
19.03.2007
Despite its recent appearance AMD64 platform provides a great amount of various tools for Linux. The article "A Linux Toolbox for AMD64 Developers" briefly reviews a set of Linux compilers and debuggers for AMD64 platform by different companies and describes their specific features and abilities. The article is also supplied with screenshots of some of the tools.
-
10.10.2006
Citing George Santayana's aphorism "Those who cannot repeat the past are condemned to repeat it", the author offers a detailed review of the history of computer industry development from the early solutions and technologies to the modern issues of 64-bit with the purpose to draw crucial lessons from the past to keep in mind. Written in lively and somewhat ironical manner, the paper provides though a serious and thorough analysis of the solutions, tendencies and mistakes of the past and pays attention to the development of 64-bit technology and problems relating to it.
-
14.09.2006
The article is aimed at the Linux developers who would like to develop 64-bit code for AMD64 processors. The author gives an overview of the basic Linux programming tools paying special attention to GNU open-source toolchain. You will find a list of some new command-line switches necessary for any 64-bit developer and other useful options. Besides, a toolset for manipulating binary files GCC Binutils is also described. In conclusion the author lists some other worthy tools for Linux.
-
30.06.2006
As John Paul Mueller writes, "for many developers, the task of moving an application from 32-bits to 64-bits isn't scary; the problem is one of not knowing where to begin". In this paper the author offers 24 tips to consider before taking the move. They cover various aspects of porting applications from tips on using data structures and data types to those on providing 64-bit friendly installation packaging. Despite the brief character of these guidelines you will find all necessary information.
-
28.06.2006
Visual Studio 2005 environment provides developers with a good possibility to easily create 64-bit versions of applications. This article explains how to use this possibility to get the best result. The author gives basic guidelines on how to set the .NET framework, where to get its 64-bit version and 64-bit tools, and also considers some special problems for 64-bit .NET applications such as using PInvoke calls, COM components and Crystal reports.
-
28.06.2006
A very interesting article devoted to the experiment Microsoft undertook by replacing its 32-bit Web servers with 64-bit AMD Opteron processor and Windows Server 2003 x64 Edition. Besides clear and lively language, a large plus of this paper is detailed analysis of the reasons of this step with reference to the whitepaper published by Microsoft and thorough investigation into its amazing results.
-
27.06.2006
In this article Anderson Bailey explains how 64-bit mode enables acceleration of arithmetic and consequently performance of math-intensive applications. He briefly describes the principles and purposes of the three types of arithmetic provided by 32-bit mode (GPRs, x87 registers and SIMD registers) and analyzes the mechanisms of improving their performance in 64-bit mode provided by AMD64 architecture. The author also makes some conclusions about the spheres of software development that will especially benefit from this improvement.
-
12.05.2006
Linux-application developers facing the task of porting their programs will find much useful information in this article. Beginning with a brief discussion of 32-bit architecture's constraints and main advantages of 64-bit one, the author moves on to touch upon peculiarities of 64-bit Linux architecture and then gives many valuable tips to deal with various common issues of porting from 32-bit to 64-bit systems concerning declarations, expressions, assignments, numeric constants and many other aspects. Every point is illustrated by a code example.
-
11.05.2006
Matt Pietrek shares his experience of working with Win64 and x64 architecture and provides developers with useful information about 64-bit programming. The article is divided into three main sections. In the first one the author considers details of x64-based Windows implementation, including such issues as memory limits, address space, exception handling and so on. The second part concerns a set of instructions of the x64 architecture itself. The third section is devoted to developing for x64 with Visual C++ environment and includes instructions on how to set the environment, how to deal with some issues of making code Win64-compliant and how to debug the application. The article contains many code samples and illustrative tables and screenshots. Lively language is another plus of the paper.
-
11.05.2006
As seen from the title, this paper is intended for developers creating applications, compiler tool chains and virtual machines on AthlonT 64 and OpteronT ccNUMA multiprocessor systems using Microsoft Windows operating system. In the introduction the author touches upon the advantages of ccNUMA architecture over traditional symmetric multiprocessing systems. Further he describes the experimental environment where performance study was carried out and also gives instructions on how to read and interpret graphs. The next section contains a detailed analysis of the results received with the help of the synthetic test undertaken and recommendations for performance improvement concerning thread scheduling, data location and cache line sharing. Besides, some "myths" relating to memory access hops are debunked. A great advantage of this paper is its thorough investigation of performance issues and clear explanation of the results. Many recommendations are supplied with graphs as well.
-
11.04.2006
The paper deals with issues a developer may encounter when porting a 32-bit application to the x64 processor, and includes several sections devoted to explaining reasons for porting, giving some facts to consider before porting, and describing the steps of porting an application to a 64-bit platform. The paper covers only the most common points and rather briefly but it can serve a good introduction to porting 32-bit C++ applications to the x64 platform for those who has just faced this problem.
-
31.03.2006
In his article, Allan McNaughton touches upon issues of interoperability between 32- and 64-bit processes in mixed-mode applications that serve as one of the way to bridge the gap between 32-bits and 64-bits. The author pays special attention to WOW64 and describes its working principle and gives a typical example of interoperability problem caused by mixed use of 64-bit pointers and shared memory.
-
24.03.2006
Would you like to see a one-stop shop providing everything you need for 64-bit development? There is such a place - AMD Developer Central. With the help of Allan McNaughton you'll learn about the advantages of this source and a great variety of services and tools provided by it. For example, very good news for many developers is that such popular tools as AMD CodeAnalyst, AMD Core Math Library and AMD SimNow used for increasing performance, writing low-level code and other purposes are now free to obtain. And there are many other spheres you can benefit in from AMD Developer Central.
-
23.03.2006
In his brief blog-note the author dwells upon an idea to report various issues of 64-bit programming for a wide public. As we can see, this idea resulted in a kind of weekly e-magazine "64-bit Insider" providing interesting information on everything connected with 64-bit programming. The main plus of these publications is their easy-to-digest language so that even developers new to program migration and 64-bit software development could benefit from these materials.
-
01.02.2006
In this article, the authors share their experience of porting an application with support of 11 operation systems to a 64-bit environment. Proceeding from this experience they single out the two major cross-platform migration issues: integer-long-pointer mismatches and implicit function declarations. They also touch upon some more hidden issues and in the end of the article, give valuable tips on coding and a list of useful 64-bit tools and techniques. The article will be interesting for all programmers and especially for those who face the task of porting cross-platform applications with large code to 64-bit systems.
-
01.10.2005
Memory errors may cause a lot of problems when porting to 64-bit platforms. Rich Newman is going to share some guidelines on how to fix memory errors before porting an application. He touches upon the nature of troubles occurring when moving to 64-bits and explains step by step how to find and fix errors with the help of the so called mutation testing. You will also find some tips on how to detect problems of the 64-bit processor itself.
-
07.03.2005
In a brief but informative article Conrad Carter focuses on efficient use of switches in C/C++ compilers for providing high performance and good portability of 64-bit code. In particular, he considers Visual C++ 2005 and gcc 3.3.3. For each compiler a set of the most useful switches is given as well as thorough instructions on their use. In conclusion the author touches briefly upon AMD Core Math Library.
-
31.01.2005
One more brief blog-note by Raymond Chen where he explains the reasons why Win64 team chose LLP64 data model, showing by an example the rationality of their choice.
-
11.01.2005
As it is known, the main cause of problems when converting 32-bit applications to 64-bit ones is change of sizes of long and pointer types. Proceeding from that the authors of the article offer a set of some very useful rules of using types following which will help you avoid these problems. They cover various methods of improving your code and are illustrated by detailed examples.
-
19.10.2004
Porting applications to the 64-bit mode of the PowerPC 970FX processor is a specific task and Matt Tyrlik is going to encourage developers and help them eliminate main issues relating to porting existing 32-bit code to the new computing model. The article consists of three parts. The first one describes main issues you may encounter when porting C language software to the 64-bit computation mode of the PowerPC 970FX. This section covers data type changes, pointer arithmetic, function pointers and compiler options. The second part discusses issues of porting 32-bit assembly language software to the 64-bit computation mode and deals with TOC programming, assembly language data objects and function calls etc. The third part covers changes needed for supervisor-level software. The text is supplied with many code samples.
-
21.07.2004
Porting of multimedia codecs to 64-bit environment involves some challenges but done skillfully it provides a great increase of performance. The article focuses on the porting issues and ways to solve them. It consists of two main sections - "Porting Challenges" and "Optimization Techniques". In the first one, the author describes obstacles a developer can face before the porting process and gives some tips to avoid them: these tips include using SSE/SSE2 Instructions instead of MMX and 3DNow! ones, using intrinsics instead of inline assembly and using portable scalable data types. The second section dwells upon several techniques of optimizing the process of porting. They include extended 64-bit general purpose registers, loop unrolling, using aligned memory accesses and some more. Each technique is thoroughly described in illustrated by schemes and example of various codecs' codes. Besides, there is a brief note on porting and performance evaluation tools for codecs with an emphasis on CodeAnalyst.
-
20.01.2004
This article considers floating-point arithmetic for numerical computing on the example of summing square-roots on different architectures. The results of computation are thoroughly compared and described in several tables. The issues of the precision level and what to consider a "correct" result are also examined. The article will be interesting for everyone involved in floating-point computation.
-
14.01.2004
In this brief blog-note, Raymond Chen touches upon the AMD64 architecture and gives some tips on working with its registers supplying them with code samples.
-
11.11.2001
Proceeding from his own experience of modifying Nile application for the 64-bit Microsoft .NET Advanced Server, the author discusses the issue of porting applications to 64-bit systems. He gives some recommendations on how to prepare source code ready for the smooth port and describes the issues related to differences in data types and memory alignment. At the end of the paper, there are some good habits of working with 64-bits to keep in mind.
-
04.12.1997
Beginning with a brief history of UNIX system and computer industry's development, Andrew Josey describes the 64-bit data models (LP64, ILP64, LLP64), the principles of their implementation, their peculiarities and porting issues conditioned by differences between 32-bit and 64-bit data models. He goes on to speak about UNIX specifications' data size neutrality and some more issues of porting code to a platform with LP64 data model relating to declarations, assignment and function parameters, external interface, use of constants, pointers and so on. The author also gives some useful instructions to avoid these problems.