Log inRegister an accountBrowse CSDbHelp & documentationFacts & StatisticsThe forumsAvailable RSS-feeds on CSDbSupport CSDb Commodore 64 Scene Database
You are not logged in - nap
CSDb User Forums


Forums > C64 Coding > Kick Assembler Thread 2
2009-07-21 17:20
Slammer

Registered: Feb 2004
Posts: 416
Kick Assembler Thread 2

The previous thread took a little long to load, so this is a new fresh one..
 
... 590 posts hidden. Click here to view all posts....
 
2012-04-18 18:39
Slammer

Registered: Feb 2004
Posts: 416
Mace: What Killsquad and Cruzer said. Pseudocommands is macros that takes assembler instruction arguments. So you can write :myCmd #$20 or :myCmd $20 and the command will know that the first one is an immediate argument and the second one is an absolute argument although they both have the value $20.

Killsquad: Thanks! Good Point. I actually considered that solution when I made the enum directive and it could just as well have been that solution. However, I'm rather sensitive to things that destroys backwards compatibility so I'm not planning on changing it.
2012-04-30 08:12
ruk

Registered: Jan 2012
Posts: 43
Hi,

This does not compile:
.var hashtable = Hashtable()
.const booleanOption = hashtable.containsKey("booleanOption") && hashtable.get("booleanOption")


The error is "Error: Can't get a boolean representation from a value of type Null", so I guess there is some issues with lazy evaluation?

As a workaround I have defined the following function:

.function getValue(hashtable, key, defaultValue) {

        .if (hashtable.containsKey(key))
                .return hashtable.get(key)
         else
                .return defaultValue
}


So that I can do e.g.

 .const underTest = getValue(cmdLineVars, "testing", false)


2012-04-30 10:09
Cruzer

Registered: Dec 2001
Posts: 1048
@Ruk:

You're trying to make a boolean and (&&) of false (the result of containsKey) and null (the result of get), which doesn't make sense.

Your function seems to do the job, but you could also do it like this:
.const booleanOption = hashtable.containsKey("booleanOption") ? hashtable.get("booleanOption") : false

2012-04-30 13:37
ruk

Registered: Jan 2012
Posts: 43
Sure, np, but I've gotten used to lazy evaluations in boolean expressions.

Thing is, if containsKey() == false the '&&'-operator shouldn't evaluate the term to the right since the whole expression is bound to be false.

It just struck me as odd that Kickass complained.
2012-04-30 18:25
Cruzer

Registered: Dec 2001
Posts: 1048
Ah, so that's what you meant. Wasn't familiar with the term lazy evaluation. Guess KickAss doesn't use it, but I guess it would be smart from a performance viewpoint.
2012-04-30 20:27
tlr

Registered: Sep 2003
Posts: 1714
It's also commonly known as "short circuiting" operators. It is well defined for many C-like languages. I would guess it applies to Java as well.
2012-05-03 13:29
Frantic

Registered: Mar 2003
Posts: 1627
Can't remember last time when I encountered a language that did NOT use lazy evaluations. Indeed something that I have also gotten used to using.
2012-05-03 18:44
Slammer

Registered: Feb 2004
Posts: 416
KickAssembler will probably support short circuiting in one of the future versions, as it converges towards the Java/C++ style. The idea is that, the more ways KickAss Script is similar to C++/Java, the easier it is to learn since you can use what you already know.

Frantic: Don't know if its still the case, but Visual Basic?

Once I had to work in Visual Basic for a shorter period of time and one of the things I really missed was short circuiting, which really ruled out a lot of ways to express things. So I fully understand why you miss it.

2012-05-06 03:06
chatGPZ

Registered: Dec 2001
Posts: 11108
i think this is a bug =) this works:

.import source "../framework/framework.asm"


this gives an error:

.if (1 == 1) {
        .import source "../framework/framework.asm"
}


flex pass 1
        .import source "../music/music2.inc"

        .if (1 == 1) {
        .import source "../framework/framework.asm"
        ^

Error: Unknown import type 'source'


whatthehell ? :)

edit: lol. i already reported it a while ago =) and i still think its an error, its totally not how you'd expect it to work and it makes more complex stuff almost impossible to do. too bad really, things like that drive me back to ca65, despite the many nice features in kickass :/ (.if always adding a scope around the enclosed block also makes it a lot less useful than it should be, unfortunately)
2012-05-06 12:14
ruk

Registered: Jan 2012
Posts: 43
I think what we're lacking is preprocessor stuff à la C since things like conditional compilation can't be solved by the scripting facilities of KickAss.
At least this is what I suspect.

So, I propose the introduction of #if, #ifdef, #ifndef, #else, #elif and #endif directives. It would solve many things, at least for me.
Previous - 1 | ... | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | ... | 60 - Next
RefreshSubscribe to this thread:

You need to be logged in to post in the forum.

Search the forum:
Search   for   in  
All times are CET.
Search CSDb
Advanced
Users Online
Guests online: 144
Top Demos
1 Next Level  (9.8)
2 Mojo  (9.7)
3 Coma Light 13  (9.7)
4 Edge of Disgrace  (9.6)
5 Comaland 100%  (9.6)
6 No Bounds  (9.6)
7 Uncensored  (9.6)
8 The Ghost  (9.6)
9 Wonderland XIV  (9.6)
10 Bromance  (9.6)
Top onefile Demos
1 It's More Fun to Com..  (9.8)
2 Party Elk 2  (9.7)
3 Cubic Dream  (9.6)
4 Copper Booze  (9.5)
5 Rainbow Connection  (9.5)
6 TRSAC, Gabber & Pebe..  (9.5)
7 Onscreen 5k  (9.5)
8 Wafer Demo  (9.5)
9 Dawnfall V1.1  (9.5)
10 Quadrants  (9.5)
Top Groups
1 Oxyron  (9.3)
2 Nostalgia  (9.3)
3 Booze Design  (9.3)
4 Censor Design  (9.3)
5 Crest  (9.3)
Top Fullscreen Graphicians
1 Carrion  (9.8)
2 Joe  (9.8)
3 Duce  (9.8)
4 Mirage  (9.7)
5 Facet  (9.7)

Home - Disclaimer
Copyright © No Name 2001-2024
Page generated in: 0.049 sec.