Email or username:

Password:

Forgot your password?
Top-level
Devine Lu Linvega

@eamon The primary advantage is that's it takes less memory and is faster, especially when used in datastructures. If you're using the STR/LDR opcodes, you need to use the comma rune. If you use JCI(?)/JMI(!)/JSI opcodes, the assembler will handle that for you.
wiki.xxiivv.com/site/uxntal_re

4 comments
Eamon

@neauoire awesome, thank you! So if I label my function (or data structure) the normal way:
`@draw-character ( char -- )`

I can jump to it from any address within 127 bytes using any of the following, and they all work pretty much the same?
;draw-character JSR2 ( absolute call )
,draw-character JSR ( relative call )
draw-character ( relative immediate call )

(I was going to test this tonight.)

@neauoire awesome, thank you! So if I label my function (or data structure) the normal way:
`@draw-character ( char -- )`

I can jump to it from any address within 127 bytes using any of the following, and they all work pretty much the same?
;draw-character JSR2 ( absolute call )
,draw-character JSR ( relative call )
draw-character ( relative immediate call )

Devine Lu Linvega

@eamon Yep, exactly. Unless you need to do pointer arithmetic(like get the routine address dynamically) you should always use immediate calls. In this case, I wouldn't manually choose to JSR to it, I'd use a relative immediate call.

Devine Lu Linvega

@eamon JSR/JMP/JCN opcodes are so you can run routines from a pointer, but in normal times, you should almost never use those. Left has a single JSR2 opcode for example:
git.sr.ht/~rabbits/left/tree/m

Eamon

@neauoire ahhh this clears up a lot. Thank you!

Go Up