News:

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

Re: OPTION PROLOGUE:NONE not working

Started by Ratch, April 27, 2006, 02:56:48 AM

Previous topic - Next topic

PBrennick

This is so tiresome... I must have been nuts to read the whole sordid diatribe!

Paul
The GeneSys Project is available from:
The Repository or My crappy website

hutch--

 :bg

>  The truth in this case is fuzzy logic, in which statements may be true, false, or somewhere in between.

I guess your problem of unintelligible arguments has to have a basis somewhere. Here is yet another dilemma for you in your reasoning style.

If "statement" is TRUE, then its not FUZZY logic.
If "statement" is fuzzy logic, then its not TRUE.

>> Not in the context of the topic, the use of OPTION PROLOGUE renders your arguments nonsense.
>In what way?  Why do I need it for my method?

You have among other things confused the difference between your argument which you try and inflict on others and your method which is your problem. While your method will probably work your argument does not depend on your subjective experience but on whether what you say is true.

Quote
Ah!  Now I determined what you are saying.  I always thought that PROTO would work without PROC/ENDP, but I just tried it and it does not.  Strange, I have never explicitly coded PROTO in my code before.  In fact, I developed a MACRO called INVOKIT to bypass parameter counting.  That was so I could PUSH parameters before the INVOKE.  I guess I never missed the benefits of PROTO too much because oftentimes I bypassed it.

Surprise surprise, MASM has worked this way since the delivery of MASM 6.0 in 1990. My own disposition on pseudo "invoke" macros is they are a waste of time as they fail to do anything useful in terms of argument checking yet they still restrict full manual coding. In every instance the manual PUSH / CALL technique is a better option than phony "invoke" macros.

> However, my method is not about counting parameters, it is about managing the stack manually and not using the EBP register.

Its called writing a procedure without a stack frame, tell us something new.

> How is writing to the stack with ESP or EBP more efficient than a PUSH?

Simple, the MOV mnemonic is almost exclusively faster than the PUSH mnemonic when it comes to loading a structure like a WNDCLASSEX. A MOV is copy data to destination, a PUSH is copy data to stack AND alter the stack pointer. Do more = take longer.

Now your distinction between space allocated on the stack for LOCAL or AUTOMATIC variables as against on the fly allocation from one function call to another is this simple, for an entire procedure the LOCAL or AUTOMATIC variables are only done once on entry and exit to the procedure where you method must perform the task multiple times for multiple functions, thats why its sloppy inefficient code.

Download site for MASM32      New MASM Forum
https://masm32.com          https://masm32.com/board/index.php

Ratch

PBrennick,

QuoteThis is so tiresome... I must have been nuts to read the whole sordid diatribe!

     Sorry Paul.  Just hang in there a little longer.  You can do it.  Ratch

Ratch

hutch--,

QuoteI guess your problem of unintelligible arguments has to have a basis somewhere. Here is yet another dilemma for you in your reasoning style.

If "statement" is TRUE, then its not FUZZY logic.

     If a statement is TRUE, then it could be fuzzy logic.

QuoteIf "statement" is fuzzy logic, then its not TRUE.

     If a statement is fuzzy logic, then it could be TRUE, FALSE, or in-between.

QuoteYou have among other things confused the difference between your argument which you try and inflict on others and your method which is your problem. While your method will probably work your argument does not depend on your subjective experience but on whether what you say is true.

     I think that is a distinction without a difference.  If I apply what I say, and it turns out like it I expect, then the method must be valid.  That does not make it the only method.  Others must judge whether my method is for them.

QuoteSurprise surprise, MASM has worked this way since the delivery of MASM 6.0 in 1990. My own disposition on pseudo "invoke" macros is they are a waste of time as they fail to do anything useful in terms of argument checking yet they still restrict full manual coding. In every instance the manual PUSH / CALL technique is a better option than phony "invoke" macros.

     Yes, psuedo invokes do something useful.  They don't error out if one doesn't PUSH the full set of parameters because some parameters were pushed earlier.  Manual PUSH/CALL will certainly do the job, but "phony" invoke macros mimic some characteristics of INVOKE by keeping parameters on one line and PUSHing in reverse order.

QuoteIts called writing a procedure without a stack frame, tell us something new.

     All right.  It still is a stack frame, albeit a DYNAMIC or FREE stack frame.  The stack frame used the PROC/ENDP is a STATIC or ANCHORED frame.  They both have advantages and disadvantages.  It is not 'frameless" in my case because I define it by a shifting STRUCTURE.

QuoteSimple, the MOV mnemonic is almost exclusively faster than the PUSH mnemonic when it comes to loading a structure like a WNDCLASSEX. A MOV is copy data to destination, a PUSH is copy data to stack AND alter the stack pointer. Do more = take longer.

     True, unless more silicon is devoted to PUSH nowadays on the newer CPUs.  And you have the parameters in registers, or the the parameters are addresses or constants.  Can't MOV memory contents onto the stack like a PUSH can.  Otherwise you have to load 'em into registers first, and that takes time.  Not that it matters much, but a MOV to the stack uses more bytes that a PUSH does.  All in all, I don't think you are saving big time, since it is usually called only once and not too many params are involved.

QuoteNow your distinction between space allocated on the stack for LOCAL or AUTOMATIC variables as against on the fly allocation from one function call to another is this simple, for an entire procedure the LOCAL or AUTOMATIC variables are only done once on entry and exit to the procedure where you method must perform the task multiple times for multiple functions, thats why its sloppy inefficient code.

     I don't understand what you are saying.  The PROC/ENDP subroutines have to SUB ESP,XXX  and ADD ESP,XXX to allocate/release local storage just as I do every time the function is called.  What am I missing here?  Ratch



     






hutch--

 :bg

The problem as I see it with Ratch's view is that he has argued against using the standard MASM PROC / ENDP for some years in ignorance of how it works. Vascillating between "I can do it better" and "I don't know how it works" tells us no more than Ratch has not done his homework on how MASM works. Using "fuzzy logic" of the type "I don't know how it works so there is something wrong with it" may function as being "Hopelessly pedantic" but it has little to say about the value of the criticism of the standard PROC / ENDP notation in MASM and how it works.

Now if Ratch was selling an advanced technique that may have some coding advantage, I have no doubt that someone would look at it to see if its actually useful but making years of criticism of very well known standard methods in MASM on the basis of ignorance is another matter that leaves Ratch open to technical criticism for what he clearly did not know for those years of criticism.

============================
    Beware, waffle below :)
============================

Now to deal with the last posting of blunders.

> If a statement is TRUE, then it could be fuzzy logic.
> If a statement is fuzzy logic, then it could be TRUE, FALSE, or in-between.

Both statements have the same blunder, the expression "could" has no objective reference, it is a personal subjective value judgement that is not subject to being either true or false.

The next blunder is the multi-value truth system being assumed. TRUE and FALSE are well understood where the "inbetween" operator is an unknown. The viable distinction is between "what exists" and "how you know it exists", historically referred to as the distinction between ontology and epistemology. Apply a multi-value truth system to itself and it becomes unintelligible.

I could comment on the further technical blunders and term redefinitions but its a case of "who cares".

Download site for MASM32      New MASM Forum
https://masm32.com          https://masm32.com/board/index.php

Ratch

hutch--,

QuoteThe problem as I see it with Ratch's view is that he has argued against using the standard MASM PROC / ENDP for some years in ignorance of how it works.

     Of course I know how it works.  To say otherwise is disengenuous.  The only thing you can say is that I was unaware that the PROTO directive needs the PROC/ENDP to work.  I don't use the PROTO directive with my subroutines because it would lock me into a standard calling sequence where every param of the subroutine would have to be PUSHed onto the stack concurrently instead of possibly PUSHing them when they first become available.  If I used and needed the PROTO directive, then you can be sure that I would have learned how it to implement it.

QuoteVascillating between "I can do it better" and "I don't know how it works" tells us no more than Ratch has not done his homework on how MASM works.

     Another disengenuous statement.  I have been consistent on both "I can do it better" and "I don't need it, want it, and have to bypass it".

QuoteUsing "fuzzy logic" of the type "I don't know how it works so there is something wrong with it" may function as being "Hopelessly pedantic" but it has little to say about the value of the criticism of the standard PROC / ENDP notation in MASM and how it works.

     You are confused about what fuzzy logic is.  I have explained my dislike of PROC/ENDP and enumerated the virtues and faults of my method many times.  You have not offered any effective substantive criticism of my method except to pronounce in general terms that my reasoning is somehow flawed.

QuoteNow if Ratch was selling an advanced technique that may have some coding advantage, I have no doubt that someone would look at it to see if its actually useful but making years of criticism of very well known standard methods in MASM on the basis of ignorance is another matter that leaves Ratch open to technical criticism for what he clearly did not know for those years of criticism.

     My technique is not really new or advanced.  Perhaps my implementation is somewhat different.  Everyone will have to decide for themselves whether it is right for them.  This technique was not developed by being ignorant.  The act of not using, needing, bypassing, or not learning how to implement a "feature" of the PROC/ENDP-PROTO is not ignorance.  And it does not change my method or its effectiveness.  What more can I say?

QuoteNow to deal with the last posting of blunders.

> If a statement is TRUE, then it could be fuzzy logic.
> If a statement is fuzzy logic, then it could be TRUE, FALSE, or in-between.

Both statements have the same blunder, the expression "could" has no objective reference, it is a personal subjective value judgement that is not subject to being either true or false.

     Both statements above are absolutely true.  It is not necessarily a subjective judgement.  It might be a fact.  That is why the conditional "could" is in the definition.

QuoteThe next blunder is the multi-value truth system being assumed.

     No, not multi-valued, partially TRUE  or partially FALSE.  That can happen in everyday life.

QuoteThe viable distinction is between "what exists" and "how you know it exists", historically referred to as the distinction between ontology and epistemology. Apply a multi-value truth system to itself and it becomes unintelligible.

     An irrelevant false observation as to whether my method has merit.

QuoteI could comment on the further technical blunders and term redefinitions but its a case of "who cares".

     "Who cares" is the best observation you made so far.
------------------------------------------------------------------------------
All right, let's summarize.  I proposed a method that basically uses a floating stack frame implemented by a STRUCT.  Because the stack frame is floating, it does not need to use EBP, or need some of the set up code.  Furthermore, the params do not have to be PUSHed onto the stack concurrently.  The method is also very well suited to efficient cascaded subroutine CALLs where the called subroutine can use the parameters directly from the stack of the previous calling subroutines.  And, some of the original params can be left on the stack for subsequent calls if desired.  This REQUIRES that I do not use PROC/ENDP and PROTO.  You said that I was in error for not using OPTION PROLOG/EPILOG:NONE.  I said that it was completely useless to me because I did not use PROTO.  You then said that I was coding in ignorance or some such nonsense.  As a sideline, we also discussed PUSHing WNDCLASS vs writing it directly to the stack.  You said that it was more efficent to MOV instead of PUSH, and PUSHing was sloppy and inefficent.  I pointed out to you that coding the address of the stack took more bytes than a PUSH, and memory contents had to be loaded into a register before a MOV to the stack could be done.  So far, you have not said anything further about that.  You also have not so far explained why you think the PROC/ENDP is more efficient for setting up LOCAL storage than my method is, as you avered at the end of response #48.  I would be interested in that explanation.  Ratch
   







     



     
Quote

hutch--

 :bg

The problem for Ratch as I see it is a history of railing for years against standard techniques built into MASM on the basis of ignorance. Whether he understands it or not, MASM is very well understood by a massive number of people and this extends to how it constructs a stack frame with its standard PROC / ENDP as well as how the OPTION PROLOGUE / EPILOGUE operators works.

There is no mystery about how these things work as long as you understand them yet from the things that Ratch has said for some years, he has YET to understand the standard MASM notation for creating procedures either with or without a stack frame (by conventional definition).

Ratch's problem is that he is WRONG, not half left, not communist but just plain WRONG in what he has kept trying to misrepresent about how MASM works.

The "Hopelessly pedantic" approach is just that, "hopeless" and pedantic". It seems the only approach to put an end to it is to find Gidney and Clyde so they can give him a serious "scrooching" before those ferocious grannies from Arizona beat him to a pulp with their walking sticks.  :cheekygreen:
Download site for MASM32      New MASM Forum
https://masm32.com          https://masm32.com/board/index.php

Ratch

hutch--,

QuoteThe problem for Ratch as I see it is a history of railing for years against standard techniques built into MASM on the basis of ignorance.

     Just one technique thus far. And not on the basis of ignorance--upon enlightenment.

QuoteWhether he understands it or not, MASM is very well understood by a massive number of people and this extends to how it constructs a stack frame with its standard PROC / ENDP as well as how the OPTION PROLOGUE / EPILOGUE operators works.

     Yes, we all understand how it works.  It is not rocket science.

QuoteThere is no mystery about how these things work as long as you understand them yet from the things that Ratch has said for some years, he has YET to understand the standard MASM notation for creating procedures either with or without a stack frame (by conventional definition).

     I never said I don't understand how procedures are created.  I said I have a better way of doing it other than the conventional MASM way.

QuoteRatch's problem is that he is WRONG, not half left, not communist but just plain WRONG in what he has kept trying to misrepresent about how MASM works.

     I only explained my way.  I never tried to teach anyone how MASM works.  That would be a giantic subject.

QuoteThe "Hopelessly pedantic" approach is just that, "hopeless" and pedantic". It seems the only approach to put an end to it is to find Gidney and Clyde so they can give him a serious "scrooching" before those ferocious grannies from Arizona beat him to a pulp with their walking sticks. 

     You sure you don't mean Bonnie & Clyde?  I can still run faster than any old granny.  :toothy Ratch




hutch--

Why do I detect some back door revisionism ? Easy, Ratch is not happy with his past history of mistakes being revealed.  :P Having railed against the standard methods built into MASM for a period of years only to find out that Ratch has not properly understood how they even work when we have heard comments about "subtle" changes to procedures and "hidden" changes when you use the PROC / ENDP operators when in fact MASM stack frames are very well understood.

The next jewel was not understanding how the topic OPTION PROLOGUE / EPILOGUE notation works and how it relates to MASM prototyping when it has only been done this way since MASM 6.0 in 1990. Arguing from a position of personal ignorance does not convince anyone yet Ratch has been doing this for years with his whinging about the way MASM works with its PROC / ENDP capacity either with or without the topic modifiers.

Born again revisionism aside, the problem for Ratch is that he is WRONG in what hew has asserted about MASM for years and a vaste number of people already know it.

If Ratch was just selling a different technique there would be no problems as it would be evaluated on its merits but as long as Ratch tries to misrepresent the capacity of the assembler, he keeps making a fool of himself when the capacity is so well known by so many people.
Download site for MASM32      New MASM Forum
https://masm32.com          https://masm32.com/board/index.php

Ratch

hutch--,

QuoteWhy do I detect some back door revisionism ?

     Your imagination is running wild.

QuoteEasy, Ratch is not happy with his past history of mistakes being revealed.

     What mistakes?  Everything I described about my method works.

QuoteHaving railed against the standard methods built into MASM for a period of years only to find out that Ratch has not properly understood how they even work when we have heard comments about "subtle" changes to procedures and "hidden" changes when you use the PROC / ENDP operators when in fact MASM stack frames are very well understood.

     The method of using PROC/ENDP is singular, not plural.  And PROC/ENDP does affect how code is generated.  Yes, everyone except nubes understands how stack frames work.  You are foolish in thinking that I don't know that.  I would not have been able to develop my method without understanding it.  Are you getting mixed up in differentiating between how PROC/ENDP works and how stack frames are or could be implemented?


QuoteThe next jewel was not understanding how the topic OPTION PROLOGUE / EPILOGUE notation works and how it relates to MASM prototyping when it has only been done this way since MASM 6.0 in 1990.

     So what?  Why learn something if you are never going to use it or need?  That's like recording every license plate you pass while driving.  It's useless knowledge.

QuoteArguing from a position of personal ignorance does not convince anyone yet Ratch has been doing this for years with his whinging about the way MASM works with its PROC / ENDP capacity either with or without the topic modifiers.

     I would call it personal enlightment.

QuoteBorn again revisionism aside, the problem for Ratch is that he is WRONG in what hew has asserted about MASM for years and a vaste number of people already know it.

     You keep saying that like a mantra, but you never prove it.  My method works and it is efficient.  You cannot deny that.

QuoteIf Ratch was just selling a different technique there would be no problems as it would be evaluated on its merits but as long as Ratch tries to misrepresent the capacity of the assembler, he keeps making a fool of himself when the capacity is so well known by so many people.

     The capacity of MASM is indeed known by a lot of people, but that is not the question, except in your mind.  I never questioned that MASM could not do what the documentation says it could do.  I just found a better method, at least in my viewpoint.  I use MASM to implement it, so how could I be downgrading MASM?  If I wrote a MACRO to do something better than MASM does, like maybe generate a instruction that MASM does not, would you complain?

     I am still awaiting your explanation of how PUSHs are better that direct writes to the stack, and how PROC/ENDP handles LOCAL storage better than procless programming does.  Ratch











hutch--

 :bg

>  Your imagination is running wild.

No, your memory is failing you. You have made the mistake of writing your own ignorance in a miriad of postings.

> What mistakes?  Everything I described about my method works.

The mistakes you are trying to avoid after having misrepresented how MASM works in so many postings.

> The method of using PROC/ENDP is singular, not plural.

This is trash, the topic makes a nonsense of what you say.

> And PROC/ENDP does affect how code is generated.

This is trash as well, it generates a stack frame by default, it fdoes not modify code AT ALL.

> So what?  Why learn something if you are never going to use it or need?

What you "learn" is your problem, what you have repeatedly misrepresented is another altogether.

>  I would call it personal enlightment.

Only if you had bothered to actually learn it rather than misrepresent how it works as you have been doing in ignorance for years.

> I never questioned that MASM could not do what the documentation says it could do.

No, you simply continue to misrepresent what it does do with your years of postings in ignorance.

> I just found a better method, at least in my viewpoint.

Self reference is no reference. You may have a method but your assertions about MASM made over a period of years are simply WRONG. Do your own homework and read your own previous posts, no one is going to waste their time doing it for you.

All you demonstrate at the moment is that your are hopelessly pedantic but then we already know that. It looks like those grannies need to give you a sound beating with their walking sticks and be careful, those grannies are a lot craftier than you think.  :P
Download site for MASM32      New MASM Forum
https://masm32.com          https://masm32.com/board/index.php

Ratch

hutch--,

QuoteNo, your memory is failing you. You have made the mistake of writing your own ignorance in a miriad of postings.

     Saying so does not make it so.

QuoteThe mistakes you are trying to avoid after having misrepresented how MASM works in so many postings.

     Show me one mistake that is significant with respect to what I am trying to do.  Just one.

Quote> The method of using PROC/ENDP is singular, not plural.

This is trash, the topic makes a nonsense of what you say.

     How?

Quote> And PROC/ENDP does affect how code is generated.

This is trash as well, it generates a stack frame by default, it fdoes not modify code AT ALL.

     I said it affects how code is generated, not modify code already written.  For instance, it enables the PROTO directive as you already pointed out.

Quote> So what?  Why learn something if you are never going to use it or need?

What you "learn" is your problem, what you have repeatedly misrepresented is another altogether.

     What I learn is my advantage.  I have not misrepresented anything about MASM to any significant degree.

Quote>  I would call it personal enlightment.

Only if you had bothered to actually learn it rather than misrepresent how it works as you have been doing in ignorance for years

     I already explained why I did not bother to learn it.  It has no value to me.  If it had significance, why did you not correct me earlier?

QuoteNo, you simply continue to misrepresent what it does do with your years of postings in ignorance.

     An unneeded feature of insignificant value.  If it was important, why did not you or someone else correct me on this?

Quote> I just found a better method, at least in my viewpoint.

Self reference is no reference. You may have a method but your assertions about MASM made over a period of years are simply WRONG. Do your own homework and read your own previous posts, no one is going to waste their time doing it for you.

     Self reference does have standing if it is backed by reasons.  There you go with plural again.  Because you did not correct me at the time, and you are vague about what I said was wrong, you should at least give one example where the error is significant.  I too am not going to reread my previous posts just on your say so.

QuoteAll you demonstrate at the moment is that your are hopelessly pedantic but then we already know that. It looks like those grannies need to give you a sound beating with their walking sticks and be careful, those grannies are a lot craftier than you think. 

     Yes, I am hopelessly pedantic.  Those grannies are crafty, but so am I.

     Still waiting your response for PUSH vs writing to the stack, and the advantages of PROC/ENDP for LOCAL storage.  Are you ever going to explain what you meant?  Ratch





     


hutch--

 :bg

Sounds like a serious scrooching is the only solution to someone who is hopelessly pedantic and thats before the grannies give you a good pasting with their walking stick but beware of the older grannies who use walking frames, they are much heavier.

> Yes, I am hopelessly pedantic.  Those grannies are crafty, but so am I.

Crafty != hopelessly pedantic && hopelessly pedantic != crafty. About the only crafting those grannies will do with you is with their walking sticks around your ears.  :P

> Still waiting your response for PUSH vs writing to the stack, and the advantages of PROC/ENDP for LOCAL storage.  Are you ever going to explain what you meant?

Why bother when you don't even understand what you have repeatedly misrepresented about how MASM works.

Being hopelessly pedantic about simply being WRONG will not help you when those grannies catch up with you and this is BEFORE you get scrooched.
Download site for MASM32      New MASM Forum
https://masm32.com          https://masm32.com/board/index.php

Ratch

hutch--,

QuoteSounds like a serious scrooching is the only solution to someone who is hopelessly pedantic and thats before the grannies give you a good pasting with their walking stick but beware of the older grannies who use walking frames, they are much heavier.

     Scrooching means, according to the dictionary, "to hunch down or crouch".  You sure you don't mean smootching?  And I can be charming as well as crafty with the grandmas.  I can easily run away from the ones with the walkers.

QuoteCrafty != hopelessly pedantic && hopelessly pedantic != crafty. About the only crafting those grannies will do with you is with their walking sticks around your ears.

     Those characteristics are mutually exclusive with each other.  I am both.

QuoteWhy bother when you don't even understand what you have repeatedly misrepresented about how MASM works.

     What a copout!  Everyone can discern the REAL reason you don't explain yourself.

QuoteBeing hopelessly pedantic about simply being WRONG will not help you when those grannies catch up with you and this is BEFORE you get scrooched.

     They have to catch me first.  Ratch

hutch--

 :bg

> You sure you don't mean smootching?

Hopeless pedantry will not help you here. Gidney and Clyde will not be "smootching" you at all.

>  And I can be charming as well as crafty with the grandmas.

Grannies are not that stupid.

> What a copout!

You mean like being hopelessly pedantic ?

> Everyone can discern the REAL reason you don't explain yourself.

You have just become the spokesman for "everybody" ? Hopeless pedantry will not get you there except in your wildest imagination.
Download site for MASM32      New MASM Forum
https://masm32.com          https://masm32.com/board/index.php