i've always accepted the fact that each software have the- ir own 4gb of memory space... i never ask myself HOW, unt- il today. So, my question today is: how is it possible that a computer that have 128 or 32MB - of RAM installed have 4GB (which is alot! more than 128MB) ???? how is that possible?
There is an article in the MSDN : "Managing Virtual Memory in Win32" that explains virtual memory. Here is an extract
Windows NT employs a page-based virtual memory system that uses 32-bit linear addressing. Internally, the system manages all memory in 4096-byte segments called pages. Each page of physical memory is backed by either a pagefile for volatile pages of memory or a disk file for read-only memory pages. There can be as many as 16 separate pagefiles at a time. Code, resources, and other read-only data are backed directly by the files from which they originated. Windows NT provides an independent, 2 gigabyte (GB) user address space for each application (process) in the system. To the application, it appears that there is 2 GB of memory available, regardless of the amount of physical memory that is actually available. When an application requests more memory than is available, Windows NT satisfies the request by paging noncritical pages of memory—from this and/or other processes—to a pagefile and freeing those physical pages of memory.
thanx. by the way, i got it to work now. still not perfect, but better than doing it by hand. command: ml.exe /Bl link16 $(InputPath) /Fo"Debug/$(InputName).obj" outputs: Debug/$(InputName).obj the problem is DEBUGING. It doesn't work... anyway, that's just for those who are interested in using vc to compile 16bit app. =example========================================== stack segment para 'stack' stack db 1024 dup(?) stack ends code segment para 'code' public assume cs:code, ss:stack programname: JMP @begin @begin:mov ax, cs mov ds, ax @2dos:mov ax, 4c00h int 21h code ends end programname ============================================ build it and the output will list one ERROR. (whenever you see one error. then the compilation works PERFECTLY fine. but if you get more than one ERROR. then you have to check your asm source and see if there's any error in the code. for example, you'll get more than one error if you change: int 21h to int ab83 :) farewell my friend...
What error do you get ? Using the /Bl option, you link and compile in one step. It will not work if your project has several source files. You can specify 2 custom build step. One for compiling your asm files and one for building your executable. The first one uses ml.exe, the second one uses link16.exe. The only problem is to find the correct command line arguments.