1

So given I have a 64 bit machine. I know that the memory of the address where my program loads is )

0x8000:0000 and 

I need to find the destination memory address such that from 0x8000:0000 , I have at least 512 MB between.

So how do I find out what this destination memory is?

The calculation I did was 8000:0000 + 0x20000000 = result is the destination. But I am not entirely sure if it is correct. So I would need some help in here. Can anyone help me on this?

user1357576
  • 389
  • 2
  • 3
  • 17
  • What exactly are you trying to accomplish? There are a lot of things you're overlooking here. Virtual address space, paging, segmentation, etc. – Jonathon Reinhart Jun 20 '12 at 23:54
  • @JonathonReinhart I want to find out this memory address into which I can write some patterns out to test. But the thing is I need to find the destination after which I can write these test patterns safely. So I know 512 MB after 0X8000:0000 address is safe. But i need to find the exact address so that I can explicitly use the memory address – user1357576 Jun 20 '12 at 23:58
  • I guess my question is, where are you getting this address (and specifically, this notation)? – Jonathon Reinhart Jun 20 '12 at 23:59
  • @JonathonReinhart I got this address from the system memory map in technical reference manual. This 512 MB is limit set by me for some purpose – user1357576 Jun 21 '12 at 00:03

1 Answers1

0

Something like 0x8000:0000 is typically used to represent a an address in segment:offset notation, when used with a segmented memory architecture. Is that what you're dealing with here? If so, 0x8000:0000 = 0x80000. And 0x80000 + 0x20000000 = 0x20080000.

Jonathon Reinhart
  • 132,704
  • 33
  • 254
  • 328