[Abakis] Ultimate New Language! Macro EVOLUTION

[Abakis] Ultimate New Language! Macro EVOLUTION

Abakis; Easiest, most evolved macro language. Created entirely with FASM's preprocessor and directives. Ultra compact portable syntaxes for maximum production within minimal timeframe. Multi-statements specify more information for greater optimizations on other CPUs. Lightweight package. Reduced library. Includes special FASM (ASSEMBLER.EXE) to build it (?if/?while/?x is the only difference).

I recently improved LANGUAGE.INC greatly. It's been about a year since I've edited this file. Still unfinished and untested.

Quote:

* Rewrote variables. All standard names like byte, char, int/eger, void.
* Safer. Removed most fix-es. Replaced with macros and equates. "fix" was only used temporarily. Never use "fix" unless you have to. Example: "text fix db" is a bad idea. After this, the word "text" can not be used as locals, parameters or members (name#.text)
* "if" can be written on same line: if min<0, min=0, end
* Multi-Statements: let/if/loop/while/break/end can have multiple arithmetic and/or if/loop after it. Statements occur at the begining of the loop unlike with "for i=0, i<n, i++". "if/loop/while" definitions still need some work
* Pointer arithmetic (registers-only): * and &. (u8) is the default for *p if not specified by (cast)
* Automatic [value] for integral (integer/byte/void) and float/double. Address for everything else; text, arrays, structures. One exception: For special addressing modes ([a+b*c]), always specify *(x) or &(x): . *(r0+r1*4)=r2 (value) or . r0=&(r7+16) (address or expression). This is just how it works for now as a safety precaution and for CPU portability. Not quite finished, not working in all contexts
* Text arrays are easier and more versatile. Now, "text" does it all: text ta[]='ann', 'kim', 'sue'. See "variable examples" in LANGUAGE.INC.

MEANING

Abakis meaning: 1. "Abacus", oldest "calculator". 2. "...Kis", "Keep it simple". 3. It will have an ancient egyptian theme to represent the evolution of language (hieroglyphics). The .EXE icon will be an Anhk or Eye of Horus symbol. One of the mythical characters is named "Anubis", similar to "Abakis". He would be a good figure to use on the box cover illustration and advertisements.

TmX: Same as FASM with the optional aliases ?if/?while/?repeat/x so that if/while/x can be redefined for runtime. It will assemble any FASM code because if/while/x have their original meaning until they get redefined in LANGUAGE. On my phone.

Edit: Examples do not exit and I can't update now. Solution: Insert "exit" after "call !main" at the end of SYSTEM.INC. Accidentally removed it. I do not have internet and must go outside with my phone to respond and update examples (AndFTP) on a 4.3" screen.

PE: What are you talking about? Horus loves me Artists create imaginative characters like Zeus and Horus and you take them literally If there is a "Source of Goodness", then we are like receivers of this information and all artistic expression derives from it - Wizard of OZ, He-Man, Transformers, Abakis, Positive Atheism, Universalism. All have good positive messages. No disrespect. My honest truth.

1. Newcomers who come to fasm are primarily very interested in fasm and want to learn fasm primarily (first) perhaps later they will look at something like what you have designed

2. Those who are already here are mostly "elites", and they don't like to learn new languages, some of them do still, in rare cases

3. Abakis isn't "really" assembly and that pisses some people off

4. Being dependent on an underlying assembler with a new "language" on top of it creates annoying dependencies, specially if the author of the top layer isn't serious (I don't know whether you are serious or not, but it can be an annoyance)

5. If you change your mind and re-design your language often, people have to re-learn it, if this is a bad habit, some people may be put off by that and decide to abandon the language

6. If the language is highly subjective to the author, it might piss some people off. (If you don't care about making it easy to understand but do everything to make it easy for yourself to understand, the narcisistic designer, I'm not saying you are, but this is a very big annoyance with those who are)

7. If you brag about it, people may just leave your language just to punish you. There is nothing wrong about bragging, but the destructive kind of bragging where you put down other designers of similar projects.

8. People need a language designer who is optimistic and give inspiration and optimism to the user, if you find yourself to be highly destructive, that itself may trigger people to abandon Abakis.

Abakis need more association with assembly and a little less toward HLL language design. It needs stability (stability = solid base that doesn't change too often). And you need to get rid of the horus shit, languages should not be associated with religion. The last thing a buddhist want is to have Horus on his mind.

1. Newcomers who come to fasm are primarily very interested in fasm and want to learn fasm primarily (first) perhaps later they will look at something like what you have designed

Good, they should learn ASM and FASM1/G first. I don't contribute anything for "newcomers". I would say that 95%+ of my contributions (about 180+ programs, albeit small examples) were for "advanced assembler programmers".

Quote:

2. Those who are already here are mostly "elites"...

I disagree based on my experience and observation. Most of them (talkers) just pretend to be "elite" programmers. Not easily deceived.

Quote:

3. Abakis isn't "really" assembly and that pisses some people off

Abakis doesn't claim to be assembly. You have a misconception that I want people to use Abakis. All I ever wanted was for someone to improve it, the syntax/es. "Pisses some people off"? Only the ones who are all talk and no action. Their definition of "assembler" means nothing to me. I'm a multiple CPU programmer.

Quote:

4. Being dependent on an underlying assembler with a new "language" on top of it creates annoying dependencies, specially if the author of the top layer isn't serious (I don't know whether you are serious or not, but it can be an annoyance)

I never recommended that anyone "use" Abakis. Try to learn from it (LANGUAGE.INC) how to write FASM macros. Think "unique and useful". My main intention was to promote good syntax/semantics for use with any language. Personally, I may decide to use Abakis for fun, small games, utilities, etc, but I do NOT therefore think it's good for everyone else. Without strict error checking and type safety, I'd be responsible and recommend a good C compiler instead: TinyCC, C4Droid, GCC. Still, Abakis can be fun to play around with.

Quote:

5. If you change your mind and re-design your language often, people have to re-learn it, if this is a bad habit, some people may be put off by that and decide to abandon the language

Abakis was always in development. That's why I never recommended that anyone use it.

Quote:

6. If the language is highly subjective to the author, it might piss some people off.

Abakis is based strictly on numbers. "Some people" who are not programmers? Please don't use Abakis if you don't want to, it's only for highly evolved advanced programmers.

Quote:

... the narcisistic designer, I'm not saying you are, but this is a very big annoyance with those who are)

7. If you brag about it, people may just leave your language just to punish you.

"People"? Ignorant fools online? I don't want those "people" as users but don't care either way. Everyone in life says exactly the opposite: "You're too modest, not prideful enough. Start telling people about yourself, show them your abilities. You're supposed to think you're the best when everyone else says that". Never satisfied, not the "best" I can be.

Quote:

There is nothing wrong about bragging, but the destructive kind of bragging where you put down other designers of similar projects.

Huh?! I've always respected "good programmers" who create similar projects. Who can tell me what's "wrong", how much is too much? Sometimes, people mistake me for "bragging" when I'm being perfectly honest.

Quote:

8. People need a language designer who is optimistic and give inspiration and optimism to the user...

"We" don't need one person for this. Users can learn more about language design.

Quote:

... if you find yourself to be highly destructive, that itself may trigger people to abandon Abakis.

Abakis doesn't claim to be assembly. You have a misconception that I want people to use Abakis.

That's not the point, the point is that people "feel" like it is not assembly, and even if Abakis doesn't claim to be assembly, that is exactly the reason why fasm forum users may want to skip it. It's beyond the point what Abakis is claimed to be or what it is not claimed to be.

You see the difference there, hopefully.

One thing you should be aware of is that if you are trying to create a HLL language, you should leave that for other HLL languages because the compiler can do a better job with HLL code. Assembly is a tool that is only useful under the scrutiny of very sharp coders or under the scrutiny of a very sharp compiler, anything in between becomes pollution.

You should focus on creating something that makes assembly easier but that doesn't obfuscate the assembly, or you should develope a compiler. Anything else is probably a waste of time, probably.

But that doesn't mean your language isn't beautiful, it looks attractive, I haven't used it yet.

Memory.inc is lacking a MemMove function, if the memory addresses overlaps you can get very serious bugs with the memory copy function.

Adobe had such a bug with their flash player a few years ago where they used memcopy instead of memmove, and it can be serious business, just telling

Other than that, the allocate function, does it use heap, virtual or what, how can you specify that?

When coding function that is not part of a performance critical path, it is better to use the memory functions that the OS provide, even if they are slower, you break dependencies and guarantees that they will work. RtlCopyMemory, RtlFillMemory, RtlZeroMemory, SecureZeroMemory etc. Only use your own if performance is an issue.

I looked through the system.inc but I didn't have much time, I just want to help you out

begin.message.loop:

The first error is that it assumes the ANSI version of GetMessage, what if the user wants to use unicode? The second error is that the fail macro doesn't handle -1 errors on GetMessage, which is a very common newbie error. The third error is that it assumes the programmer is handling all windows, but if he wants to yield messages only from a particular window at a particular time, the parameter is wrong. The fourth error is, which isn't an error, it's just an optimization that can be performed, you run PeekMessage first and then GetMessage (to avoid a lock up), these calls requires 9 pushes on the stack, or 9 dword writes on the stack. You should use GetQueueStatus which requires only 1 push and it doesn't lock up. (Optimization for you).

In a high peformance message loop, you're writing to memory at almost ten times the amount that you really need to.

When it comes to system.inc, the window procedure has more of the important input messages handled near the bottom of the if/else clause, you should have the most frequently expected at the top of the list so they get handled first.

You should avoid lookup buffers primarily, but it may just help you here, personally I would do a split-conquer (Cut in half, cut further in half, to reduce the list). The list is highly inefficient and you shouldn't load the parameters at the window proc entry, only load the message and then load whatever is needed for the specified messages if it hits.

os.get.file.size skips the h.o dword and is limited to only file sizes of 4 GB.

create.window.x loads icon which is limited to 32x32, if the user have icons larger they will not show up or gets downgraded.

os.delay loops with GetTickCount and waste processing time, you should use Sleep to yield processing time to other processes.

os.find file should turn off Wow64 file system redirection before searching so that it works on 64 bit versions of windows.

You can not rely on importing api functions by ordinals, ordinals may change.

There is a lot in there. I actually started to like the abakis project after looking into it. It looks interesting, but I don't have more time to study it, I'm busy studying fasm macros

Abakis is something else, the hardest language with the easiest, tightest, purest syntax for the craziest, most obsessive, perfectionist ("est" compared to all the languages I've seen). Most evolved "ASM macro language". All of this is hand-written by myself. Any "mistakes" you perceive are just "unfinished business; no time; process of evolution". LANGUAGE.INC is the only file that's needed, it hasn't been updated in a long time. Try writing some code. Try making a program.

Abakis speaks in mysterious ways:

Quote:

"Use me, baby. I'm the best language, most beautiful and powerful there is, there's nothing better than me, I can prove it with numbers and measurements. Don't even look at C or I'll get jealous. You don't need her, I'll do everything for you" - Don't listen to her. She tells mostly truth that can be verified, but she's crazy, not perfect, has "issues", still needs safety and expressions. She's fun to play with at times, exciting and dramatic, but very "dangerous" and not the type who I would stay with. You can have her. I'm generous with abilities, knowledge, women, programs, languages, inventions, CPU designs, etc, things which I have an abundance of.

Don't abandon programming, you'll only delay it because you will want to come back to programming again, and there are people on the forum who want you to stay, they are highly receptive and want you to stay, they will only become angry if you leave.

You've treated many people in here like trash for many years, and some of them are not angry with you at all, it's because they want you to stay even if you attack them. It's "magical" friendship there. I was attacked by a rosegarden once....

It is critical that you come back again, urgent.

Btw. I'm studying the match macro these days. It's not really much to study, but it's one of those macros you can't skip. I see a match and it is a good match, it's not based on a virtual reality, the match is virtual at reality, you can irps to irp to go through white clumps of matter.

Not true, not "people", not "good programmers", and definitely NOT everyone, only those who offended me: John, sleep, DexOS. FreshLib IS trash! vid's FASMLIB is pretty good. At times, I did get frustrated with revolution but I like him and I get along excellent with a businessman like him who has artistic or musical talent.

Btw. I'm studying the match macro these days. It's not really much to study, but it's one of those macros you can't skip. I see a match and it is a good match, it's not based on a virtual reality, the match is virtual at reality, you can irps to irp to go through white clumps of matter.

PE_Executable: I'm not one who needs help with programming. Does Michael Jordan need help learning how to play basketball? Of course, we all need help in one way or another. I don't have time to explain. For example, all functions are ASCII (not just GetMessageA), lookup tables are good optimizations, library is 32BIT, no 64BIT OS (W8 32BIT) and no Intel library I've ever released imports by ordinal (only ARM CE).

A real "mistake" is when I believe that some code is correct when it's not. In any library this size, there are many sections of code that could be improved but is not a "mistake". Advanced programmers make "mistakes" all the time and the percentage of errors increases with the volume of code that we write. Only those who never write code never make mistakes. I'm not so afraid to "miss" that I never throw a punch.

It may be true that the "evil" we perceive in the world is "unfinished; process of evolution", the perfect system. In my code, I follow the true evolutionary process by "smart selection", tests and observation of results ("big pharma" does the opposite: alter, isolate and devolve).

Personal: Please be careful, I learn so much about you, strengths and weaknesses, with the slightest interaction. I've only viewed 4 threads containing your messages and I believe I can name 2 movies that have personalities like yours: "Knowing" and "Sorcerer's Apprentice". You "know" these kinds of people? I'm not limited to information that you "reveal".

Lookup tables are good in extremely small quantities. You can't live with them because if you do them regulary all over your code you rely in too much memory use and it's not sustainable. Cache and memory speeds vary between computers and when you use lookup tables you get too large "spikes" in the speed you get.

When you use lookup table on computer A you may get speed X, on computer B you get a totally different speed Y. That is why you should always try to avoid lookup tables and rely in cpu power, because the variation you get in cpu power is less problematic than the variation you get in memory speed.

You should use lookup buffers if they are very small, up to 64 bytes and if you have a very few of them alltogether in your code. You don't want your program to jump up and down on the computers it will run on, and the only way to do that is to rely more in cpu than memory.

When you're speaking about "mistakes", based on what you're saying it seems as if you're trying to distance yourself from that and don't want to have anything to do with that, but don't be angry with those who point out your mistakes, because it's your own mistakes, not theirs.

I have got nothing to do with Christopher Hitchens

We should join forces starcode. The elderly scrolls have gathered in a rebellion and they seek to compensate with stupidity.

You should use lookup buffers if they are very small, up to 64 bytes and if you have a very few of them alltogether in your code.

I use lookup tables where it seems appropriate, generally 32/64/128/256/512/1K in size, and only a handful of them (say 3-5) where there will be a noticeable difference. My dream portable OS (for Miracle CPU) would store the important tables in memory for all programs to read and they will not need to be duplicated inside of the executables.

Quote:

When you're speaking about "mistakes", based on what you're saying it seems as if you're trying to distance yourself from that and don't want to have anything to do with that, but don't be angry with those who point out your mistakes, because it's your own mistakes, not theirs.

Users are not aware of the real #1 problems. I am aware of real mistakes. I created this. How do you think I made it this far? By being self-critical and unsatisfied. I have to disagree respectfully. I think it's their mistake to be critical of a person who can replace legions of normal programmers, and if what they've pointed out is not a "mistake", then they've made a "mistake" by calling something a "mistake" when it's not. As soon as we take our eyes off ourselves, we begin to overlook imperfections. I think this occurred when me and Tomasz were creating examples for FASMG which is way better than FASM1. Both of our examples had problems, typos, real mistakes.

Quote:

We should join forces starcode.

Many local business owners want me to work for them doing art on vehicles, etc, but I want to be a paid independent developer. At this time, I'm working on Miracle CPU.

You cannot post new topics in this forumYou cannot reply to topics in this forumYou cannot edit your posts in this forumYou cannot delete your posts in this forumYou cannot vote in polls in this forumYou cannot attach files in this forumYou can download files in this forum