News:

MASM32 SDK Description, downloads and other helpful links
MASM32.com New Forum Link
masmforum WebSite

32Bit or 64Bit

Started by stk, February 09, 2007, 04:38:29 PM

Previous topic - Next topic

stk

Hi everyone,

first of all, i'm a newby in assembler so please apologize my question. :red

What exactly is the difference between 32Bit and 64Bit programming?
What for a special hard or software needs a programmer who is
interested in 64Bit programming?

Thank you.

regards,
stk


TomRiddle

# Device drivers must be 64-bit versions; there is no support for running 32-bit kernel-mode executables within the 64-bit OS. (Talking about Windows).

Damn!  :snooty:

torzolo

hi Tom

it is true, but non only....!  :dazzled:

x64 versions of Windows Vista require Kernel Mode Code Signing (KMCS) in order to load kernel-mode software !  :snooty:

Unsigned drivers will be rejected from the kernel !

These papers describe how to manage the signing process for kernel-mode software for Windows Vista.

http://download.microsoft.com/download/9/c/5/9c5b2167-8017-4bae-9fde-d599bac8184a/KMCS_Walkthrough.doc

http://download.microsoft.com/download/9/c/5/9c5b2167-8017-4bae-9fde-d599bac8184a/64bitDriverSigning.doc

jorgon

stk

Since you are a GoAsm user, this article will help to answer your question (although it is relevant generally):-
writing 64-bit programs.
Author of the "Go" tools (GoAsm, GoLink, GoRC, GoBug)

stk

Hello,

thank you to all for the information.

So far i have only the 32Bit versions of GoASM (the first 5 or 6 downloads of the site).

What is with the MASM32 programmers, do they need a MASM64 version?

regards,
stk

jorgon

QuoteSo far i have only the 32Bit versions of GoASM (the first 5 or 6 downloads of the site).

The GoAsm version you already have works as a 64-bit assembler if you specify the /x64 switch in the command line.
Author of the "Go" tools (GoAsm, GoLink, GoRC, GoBug)

stk

Hi,

so i do only need the sites and information what you and the others have posted before.

Thank you.

stk

jorgon

I would suggest you start with the Hello64World examples in the GoAsm help file and work from there.
Author of the "Go" tools (GoAsm, GoLink, GoRC, GoBug)

stk

Hi jorgon,

in assembly, i have no other choice than to start with "Hello World", no matter if it's
16, 32 or 64Bit :U

I've posted a question in the campus section, i think (no i know) you can explain my
question! :bg

regards,
stk

Ehtyar

As a matter of interest, ml64 is NOT a 64-bit clone of ml. Its functionality is severely diminished, and is designed only for bare-bones use. Thus if you wish to code for a 64-bit platform in assembly, i think most people on this board would recommend looking  anywhere other than Microsoft.

Hope this helps, Ehtyar.

stk

Hi,

thank you, i only want to know the differences, first of all i'll learn the
basics of the assembly language, i think that means 16Bit and MS-DOS.

stk

jorgon

Personally I would skip 16-bit assembly but a few MS-DOS commands are useful.
Author of the "Go" tools (GoAsm, GoLink, GoRC, GoBug)

stk

Hi jorgon,

but i have read that the most assemblers (32Bit and up) have the attention on
using WinAPI, and that this should be not very helpful to learn the basics of
assembler right, and that beginners should first learn assembly under 16Bit and
MS-DOS. Or is this different in your Tutorial?

stk

jorgon

If that is the advice, then I do not agree with it.

16-bit assembler is actually more difficult than 32-bit assembler because of segmentation.  And to do anything meaningful you need to grasp the DOS and BIOS interrupts.  Unless you really need to use 16-bit it would be pointless to learn it.

It is true that if you wish to write any worthwhile programs using 32-bit assembler to run under Windows, you will need at the same time to learn how to program in Windows.  32-bit assembler is very low level programming, whereas Windows is very high level programming.  In my opinion this is a perfect combination!  Learning Windows programming is a good thing!

If you just want to play around with the registers and watch this in the debugger you can write a 32-bit program which will run under Windows without calling any Win API at all eg.

START:
MOV EAX,13            ;put thirteen into the eax register
MOV ECX,13            ;put thirteen into the ecx register
MUL ECX               ;mulitply eax by ecx (answer in edx:eax)
XOR EAX,EAX           ;zero the eax register
RET                   ;return to Windows


This is the beauty of assembler!
Author of the "Go" tools (GoAsm, GoLink, GoRC, GoBug)