Skip to content

Commit

Permalink
All these now correctly generate code:
Browse files Browse the repository at this point in the history
```pawn
@emit jump_target_1:
@emit label jump_target_1
@emit LABEL jump_target_1
@emit Label jump_target_1
@emit label jump_target_1:
@emit LABEL jump_target_1:
@emit Label jump_target_1:

@emit jsleq jump_target_1:
@emit jsleq.label jump_target_1:
@emit jump.LABEL jump_target_1
@emit jump_label jump_target_1
@emit jump.Label jump_target_1
@emit jump.Label jump_target_1:
@emit jump_label jump_target_1:
@emit JUMP.label jump_target_1:
@emit JUMP.LABEL jump_target_1:
@emit JUMP.label jump_target_1
@emit JUMP.LABEL jump_target_1
@emit JUMP       jump_target_1:
@emit JUMP       jump_target_1:
```
  • Loading branch information
Y-Less committed Nov 4, 2017
1 parent c280a12 commit 1dc57c7
Showing 1 changed file with 12 additions and 3 deletions.
15 changes: 12 additions & 3 deletions asm_macros.inc
Expand Up @@ -25,14 +25,15 @@

// Only detect ONE space, so you don't need a trailing space on opcodes with no
// parameters. Add a space on the end here incase there wasn't one already.
#define @emit%0\32;%1\10;%3 (asm_emit_label:asm_emit_notlabel:asm_emit_(ctx,%1));
#define @emit%0\32;%1\10;%3 (asm_emit_haslabel:asm_emit_notlabel:asm_emit_(ctx,%1));

// Detect labels (for jump targets).
#define asm_emit_label:asm_emit_notlabel:asm_emit_(ctx,%1:) AsmEmitLabel(ctx,#%1)
#define asm_emit_haslabel:asm_emit_notlabel:asm_emit_(ctx,%1:) AsmEmitLabelStringize AsmEmitLabel:(ctx,%1)
#define asm_emit_notlabel:asm_emit_(ctx,%1) asm_emit_(ctx,%1 )

// Detect jumps to labels, instead of the labels themselves.
#define AsmEmitLabel(ctx,#%1\32;%2) asm_emit_%1Label(ctx,%2)
#define AsmEmitLabelStringize%0:(ctx,%1\32;%2) asm_emit_%1Label(ctx,%2)
#define AsmEmitLabel:(ctx,%2) (ctx,#%2)

// NOW detect the second space and use it to extract the opcode name.
#define asm_emit_(ctx,%1\32;%2) asm_emit_%1(ctx,%2)
Expand Down Expand Up @@ -738,3 +739,11 @@
#define AsmEmitCallLabelLabel AsmEmitCallLabel
#define AsmEmitCallLabel(ctx,%2) AsmEmitCallLabelStringize(ctx,#%2)

// Explicit `@emit Label name`
#define asm_emit_labelLabel(ctx,%2) AsmEmitLabelStringize(ctx,#%2)
#define asm_emit_LABELLabel(ctx,%2) AsmEmitLabelStringize(ctx,#%2)
#define asm_emit_LabelLabel(ctx,%2) AsmEmitLabelStringize(ctx,#%2)
#define asm_emit_label(ctx,%2) AsmEmitLabelStringize(ctx,#%2)
#define asm_emit_LABEL(ctx,%2) AsmEmitLabelStringize(ctx,#%2)
#define asm_emit_Label(ctx,%2) AsmEmitLabelStringize(ctx,#%2)

0 comments on commit 1dc57c7

Please sign in to comment.