Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Memory Flags and ASM

  1. Feb 10, 2008 #1
    I'm fiddling around with a hex editor here and the processes have memory blocks that have certain flags like MEM_COMMIT, MEM_RESERVE, PAGE_READWRITE. That sort of stuff. And I was wondering what all these exactly mean.
    Also I'd like some resources on x86 assembly. Something that really starts at the beginning of how and why things are the way they are. Because I'm having a little bit of trouble grasping the registers concept(among other things)...
  2. jcsd
  3. Feb 10, 2008 #2


    User Avatar
    Gold Member

  4. Feb 10, 2008 #3


    User Avatar
    Staff Emeritus
    Science Advisor
    Gold Member

    Can you say more about what you mean by "grasping the registers concept?"

    - Warren
  5. Feb 10, 2008 #4
    Well like what type of data goes where and why. Are they used just like an even faster memory than RAM or do they also have some special function? Are they the L1/L2 cache of the processor? Do you have to load everything in the registers manually? Does the compiler usually do that for you?
    I mean I don't even know what to ask. I'm just starting so I basically know exactly SQUAT about ASM.
  6. Feb 10, 2008 #5


    User Avatar
    Science Advisor
    Homework Helper

    In simple terms registers are the only storge inside the processor.
    To add 2 numbers you load the first number into register A, the second number into register B and call ADD_AB
    They are also used to store arguements to functions, so under DOS to change directory you load register A with the address of a string in memory with the directory name and call a particiular software interupt.
  7. Feb 11, 2008 #6


    User Avatar
    Gold Member

    Theres a lot that goes into learning about registers and their functions. This info can be found in any computer architecture book and most intro asm books. In order to appreciate this concept you'll have to get a grasp about different memory modes, instructions sets, CPU storage and organization, and so on. There are a few books that I can recommend, but you'll want to check your local library or school for a copy and gauge whether or not its language appeals to you.

    Null, Linda (2003). The Essentials of Computer Organization and Architecture
    Dandamudi, Sivarama (2005) Guide to Assembly Language Programming in Linux

    You may also find it in your best interest to have knowledge about digital logic. For non-electrical engineers, I would recommend The Science of Electronics: Digital by Thomas L. Floyd and David M. Buchla.
  8. Feb 14, 2008 #7
  9. Feb 16, 2008 #8
    MEM_COMMIT, MEM_RESERVE, PAGE_READWRITE are examples of constants either defined by the program or defined by Windows. They will equate to some simple integer usually and used perhaps as parameters for APIs or other procedures etc. They make life simpler for the programmer so that he/she can read something meaningfull rather that just a number. They are not flags. Flags are hardware bits in a CPU register that mean something to the assembler program. For example, the "zero" flag is set upon an operation resulting in a zero result. That content of that flag will be picked up by another part of a program to test for some other action. There are about 17 different flags I think in a x86 CPU.
  10. Feb 18, 2008 #9
    I wasn't talking about flags in assembly. It was on a separate note, something I found when exploring my memory with a hex editor(it said certain ranges of RAM have certain flags). Some appear to be self-explanatory, but others are not.
    But basically thanks for the links. This book may be nice, but I doubt I'll be getting seriously into that stuff until I have to(which is still some time away).
    Actually the ASM part of the thread was meant to be more on a side note, not the other way around.
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook