| |
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.. |
|
... 592 posts hidden. Click here to view all posts.... |
| |
Slammer
Registered: Feb 2004 Posts: 416 |
I guess Groepaz is the kind of person who goes down to the store to buy a tool so he can cook an egg. The clerk sells him a frying pan and the next day he comes back complaining that the pan is a terrible pot and that he can't get the egg hard-boild!
Groepaz: I think you mean an assembler that does not support scoping, not an assembler that supports scoping properly. |
| |
chatGPZ
Registered: Dec 2001 Posts: 11149 |
i mean exactly what i said. and no, "not the right tool for the job" does not apply here at all. hardly any other assembler is broken like this. |
| |
soci
Registered: Sep 2003 Posts: 474 |
Works as designed, it seems. |
| |
chatGPZ
Registered: Dec 2001 Posts: 11149 |
i am not doubting that at all :) |
| |
Oswald
Registered: Apr 2002 Posts: 5031 |
"I got a plenty of SMC labels like Something=*-1 so my code looks like ANYTHING else but CLEAN because of this :)
How you would create that kind of label touching code? I spent just several hours just because of this..."
I guess its a matter of habit what's comfortable & clean to you. I usually do this:
smod lda #$00
sta $d020
inc smod+1
this keeps the label and the instruction on the same line *-x wont fuck up, since you cant insert extra instruction inbetween, furthermure its obvious where the label points no *+ fucking, and one label is enough to reach lo/hi / instruction.
if the branch is really close then just:
inc $d020
jmp *-3
lda #$03
adc $02
sta $02
bcc *+3
inc $03
but I only use it in very simple cases like this. if you insert an instruction and forget to update the * you're fucked. |
| |
soci
Registered: Sep 2003 Posts: 474 |
Oswald, that was a good example why using *+ and *- is really error prone:
bcc *+3
inc $03
|
| |
chatGPZ
Registered: Dec 2001 Posts: 11149 |
hey, that way debugging never becomes a bore! =) |
| |
Oswald
Registered: Apr 2002 Posts: 5031 |
Quote: Oswald, that was a good example why using *+ and *- is really error prone:
bcc *+3
inc $03
*+4, got me there. I use those without knowing what happens, now I got exposed. i never know if the * refers to the instruction or the operand... and just too lazy to think about it for a minute O:-) I only use them to avoid the 125th skip label. |
| |
soci
Registered: Sep 2003 Posts: 474 |
The current location symbol (*) is traditionally the location at the beginning of the line in many assemblers. That is before any bytes are output for opcodes and other stuff.
Unfortunately the handling of this is broken in this assembler (e.g. in v3.34), or at least it's hard to defend the way it works.
Simple stuff is fine, e.g.:
jmp *
results in (assembled to $2000):
00 20 4c 00 20
But let's see something else:
.word *, *
results in:
00 20 04 20 04 20
while the expected result is:
00 20 00 20 00 20
Yes, I also got this wrong too in some special cases in a different way just until 3 years ago.
For those hundreds of skip labels I use "anonymous" labels. Of course moderately, as copy-pasting skip label containing code in between is a sure way to get a long lasting debug session ;) |
| |
Oswald
Registered: Apr 2002 Posts: 5031 |
well, 16 bit addition like that sort of works like a macro from my head, unless I get rusty like now. Editing is a bit easyer if you dont have to carry around the anonymous label definition ("+") too, just have the *+. :) |
Previous - 1 | ... | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | ... | 61 - Next |