Memory Flags & ASM: Understanding Hex Editors & x86 Assembly

  • Thread starter Thread starter martix
  • Start date Start date
  • Tags Tags
    Memory
AI Thread Summary
The discussion centers on understanding memory management flags like MEM_COMMIT, MEM_RESERVE, and PAGE_READWRITE, which are used in Windows programming to simplify parameters for APIs. These constants represent specific integer values that aid programmers in making code more readable. The conversation also delves into x86 assembly language, specifically the concept of registers, which are the only storage within the processor. Registers are used for operations like adding numbers and passing function arguments. The importance of learning about registers is emphasized, along with the need to understand memory modes, instruction sets, and CPU organization. Recommended resources include introductory books on computer architecture and assembly language programming, which can provide foundational knowledge for beginners. The discussion highlights that while the assembly language topic was initially a side note, it is crucial for grasping how data is managed at a low level in computing.
martix
Messages
167
Reaction score
5
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)...
 
Technology news on Phys.org
Can you say more about what you mean by "grasping the registers concept?"

- Warren
 
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.
 
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.
 
martix said:
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.

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 Langauge 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.
 
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.
 
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.
 
Back
Top