blob: 67b195c61ac190c93f2da8fbf0088a3ae5d9c323 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
;; Jump And Link: jump to subroutine but use the return address that the caller
;; had whenever the given subroutine runs `rts`. In other words, "link" the
;; return address from the caller to the callee.
;;
;; This is in practice the same as using `jmp` but it bears the semantic
;; connotation of the `jsr` one. That is, instead of this:
;;
;; jsr subroutine
;; rts
;;
;; It's more adviseable to do the following for better stack management:
;;
;; jmp subroutine
;;
;; That being said, the `jmp` instruction is also used in many other contexts,
;; and so sometimes it's needed to clarify that: "no, I have not messed up,
;; using `jmp` here instead of `jsr` is deliberate". Hence, instead of adding a
;; comment every time this small optimization is being done, use this
;; pseudo-instruction.
.macro JAL ADDR
jmp ADDR
.endmacro
|