Keep go asm in UPPERCASE. See #2620

This commit is contained in:
Matt Godbolt
2021-04-26 18:19:17 -05:00
parent d5bf418001
commit b934d999d9
3 changed files with 177 additions and 184 deletions

View File

@@ -31,21 +31,15 @@ import { ClangParser } from './argument-parsers';
// Each arch has a list of jump instructions in
// Go source src/cmd/asm/internal/arch.
const jumpPrefixes = [
'j',
'b',
// arm
'cb',
'tb',
// s390x
'cmpb',
'cmpub',
];
// x86 -> j, b
// arm -> cb, tb
// s390x -> cmpb, cmpub
const jumpRe = /^(j|b|cb|tb|cmpb|cmpub).*/i;
export class GolangCompiler extends BaseCompiler {
static get key() { return 'golang'; }
static get key() {
return 'golang';
}
convertNewGoL(code) {
const re = /^\s+(0[Xx]?[\dA-Za-z]+)?\s?(\d+)\s*\(([^:]+):(\d+)\)\s*([A-Z]+)(.*)/;
@@ -129,7 +123,6 @@ export class GolangCompiler extends BaseCompiler {
prevLine = lineMatch;
}
ins = ins.toLowerCase();
args = this.replaceJump(func, funcCollisions[func], ins, args, usedLabels);
res.push(`\t${ins}${args}`);
return res;
@@ -155,7 +148,7 @@ export class GolangCompiler extends BaseCompiler {
}
// Check instruction has a jump prefix
if (_.any(jumpPrefixes, prefix => ins.startsWith(prefix))) {
if (ins.match(jumpRe)) {
let label = `${func}_pc${match[2]}`;
if (collisions > 0) {
label += `_${collisions}`;

View File

@@ -1,14 +1,14 @@
.file 1 "test.go"
.loc 1 3 0
text "".Fun(SB), NOSPLIT, $0-0
funcdata $0, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB)
funcdata $1, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB)
xorl AX, AX
TEXT "".Fun(SB), NOSPLIT, $0-0
FUNCDATA $0, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB)
FUNCDATA $1, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB)
XORL AX, AX
.loc 1 4 0
jmp Fun_pc7
JMP Fun_pc7
Fun_pc4:
incq AX
INCQ AX
Fun_pc7:
cmpq AX, $10
jlt Fun_pc4
ret
CMPQ AX, $10
JLT Fun_pc4
RET

View File

@@ -1,201 +1,201 @@
Closures_pc0:
.file 1 "labels.go"
.loc 1 5 0
text "".Closures(SB), $24-0
movq (TLS), CX
cmpq SP, 16(CX)
jls Closures_pc75
subq $24, SP
movq BP, 16(SP)
leaq 16(SP), BP
funcdata $0, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB)
funcdata $1, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB)
funcdata $3, gclocals·9fb7f0986f647f17cb53dda1484e0f7a(SB)
TEXT "".Closures(SB), $24-0
MOVQ (TLS), CX
CMPQ SP, 16(CX)
JLS Closures_pc75
SUBQ $24, SP
MOVQ BP, 16(SP)
LEAQ 16(SP), BP
FUNCDATA $0, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB)
FUNCDATA $1, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB)
FUNCDATA $3, gclocals·9fb7f0986f647f17cb53dda1484e0f7a(SB)
.loc 1 6 0
pcdata $2, $0
pcdata $0, $0
cmpq "".N(SB), $1
jne Closures_pc49
PCDATA $2, $0
PCDATA $0, $0
CMPQ "".N(SB), $1
JNE Closures_pc49
Closures_pc39:
pcdata $2, $-2
pcdata $0, $-2
movq 16(SP), BP
addq $24, SP
ret
PCDATA $2, $-2
PCDATA $0, $-2
MOVQ 16(SP), BP
ADDQ $24, SP
RET
Closures_pc49:
.loc 1 7 0
pcdata $2, $0
pcdata $0, $0
movl $0, (SP)
pcdata $2, $1
leaq "".Closures.func1·f(SB), AX
pcdata $2, $0
movq AX, 8(SP)
call runtime.newproc(SB)
jmp Closures_pc39
PCDATA $2, $0
PCDATA $0, $0
MOVL $0, (SP)
PCDATA $2, $1
LEAQ "".Closures.func1·f(SB), AX
PCDATA $2, $0
MOVQ AX, 8(SP)
CALL runtime.newproc(SB)
JMP Closures_pc39
Closures_pc75:
nop
NOP
.loc 1 5 0
pcdata $0, $-1
pcdata $2, $-1
call runtime.morestack_noctxt(SB)
jmp Closures_pc0
PCDATA $0, $-1
PCDATA $2, $-1
CALL runtime.morestack_noctxt(SB)
JMP Closures_pc0
Closures_func1_1_pc0:
.loc 1 21 0
text "".Closures_func1_1(SB), $16-0
movq (TLS), CX
cmpq SP, 16(CX)
jls Closures_func1_1_pc74
subq $16, SP
movq BP, 8(SP)
leaq 8(SP), BP
funcdata $0, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB)
funcdata $1, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB)
funcdata $3, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB)
TEXT "".Closures_func1_1(SB), $16-0
MOVQ (TLS), CX
CMPQ SP, 16(CX)
JLS Closures_func1_1_pc74
SUBQ $16, SP
MOVQ BP, 8(SP)
LEAQ 8(SP), BP
FUNCDATA $0, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB)
FUNCDATA $1, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB)
FUNCDATA $3, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB)
.loc 1 22 0
pcdata $2, $0
pcdata $0, $0
cmpq "".N(SB), $1
jne Closures_func1_1_pc49
PCDATA $2, $0
PCDATA $0, $0
CMPQ "".N(SB), $1
JNE Closures_func1_1_pc49
Closures_func1_1_pc39:
pcdata $2, $-2
pcdata $0, $-2
movq 8(SP), BP
addq $16, SP
ret
PCDATA $2, $-2
PCDATA $0, $-2
MOVQ 8(SP), BP
ADDQ $16, SP
RET
Closures_func1_1_pc49:
.loc 1 23 0
pcdata $2, $0
pcdata $0, $0
call runtime.printlock(SB)
movq $1, (SP)
call runtime.printint(SB)
call runtime.printunlock(SB)
jmp Closures_func1_1_pc39
PCDATA $2, $0
PCDATA $0, $0
CALL runtime.printlock(SB)
MOVQ $1, (SP)
CALL runtime.printint(SB)
CALL runtime.printunlock(SB)
JMP Closures_func1_1_pc39
Closures_func1_1_pc74:
nop
NOP
.loc 1 21 0
pcdata $0, $-1
pcdata $2, $-1
call runtime.morestack_noctxt(SB)
jmp Closures_func1_1_pc0
PCDATA $0, $-1
PCDATA $2, $-1
CALL runtime.morestack_noctxt(SB)
JMP Closures_func1_1_pc0
αβ_pc0:
.loc 1 27 0
text "".αβ(SB), $16-0
movq (TLS), CX
cmpq SP, 16(CX)
jls αβ_pc74
subq $16, SP
movq BP, 8(SP)
leaq 8(SP), BP
funcdata $0, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB)
funcdata $1, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB)
funcdata $3, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB)
TEXT "".αβ(SB), $16-0
MOVQ (TLS), CX
CMPQ SP, 16(CX)
JLS αβ_pc74
SUBQ $16, SP
MOVQ BP, 8(SP)
LEAQ 8(SP), BP
FUNCDATA $0, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB)
FUNCDATA $1, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB)
FUNCDATA $3, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB)
.loc 1 28 0
pcdata $2, $0
pcdata $0, $0
cmpq "".N(SB), $1
jne αβ_pc49
PCDATA $2, $0
PCDATA $0, $0
CMPQ "".N(SB), $1
JNE αβ_pc49
αβ_pc39:
pcdata $2, $-2
pcdata $0, $-2
movq 8(SP), BP
addq $16, SP
ret
PCDATA $2, $-2
PCDATA $0, $-2
MOVQ 8(SP), BP
ADDQ $16, SP
RET
αβ_pc49:
.loc 1 29 0
pcdata $2, $0
pcdata $0, $0
call runtime.printlock(SB)
movq $1, (SP)
call runtime.printint(SB)
call runtime.printunlock(SB)
jmp αβ_pc39
PCDATA $2, $0
PCDATA $0, $0
CALL runtime.printlock(SB)
MOVQ $1, (SP)
CALL runtime.printint(SB)
CALL runtime.printunlock(SB)
JMP αβ_pc39
αβ_pc74:
nop
NOP
.loc 1 27 0
pcdata $0, $-1
pcdata $2, $-1
call runtime.morestack_noctxt(SB)
jmp αβ_pc0
PCDATA $0, $-1
PCDATA $2, $-1
CALL runtime.morestack_noctxt(SB)
JMP αβ_pc0
Closures_func1_1_pc0_1:
.loc 1 8 0
text "".Closures.func1.1(SB), $16-0
movq (TLS), CX
cmpq SP, 16(CX)
jls Closures_func1_1_pc74_1
subq $16, SP
movq BP, 8(SP)
leaq 8(SP), BP
funcdata $0, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB)
funcdata $1, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB)
funcdata $3, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB)
TEXT "".Closures.func1.1(SB), $16-0
MOVQ (TLS), CX
CMPQ SP, 16(CX)
JLS Closures_func1_1_pc74_1
SUBQ $16, SP
MOVQ BP, 8(SP)
LEAQ 8(SP), BP
FUNCDATA $0, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB)
FUNCDATA $1, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB)
FUNCDATA $3, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB)
.loc 1 9 0
pcdata $2, $0
pcdata $0, $0
cmpq "".N(SB), $4
jne Closures_func1_1_pc49_1
PCDATA $2, $0
PCDATA $0, $0
CMPQ "".N(SB), $4
JNE Closures_func1_1_pc49_1
Closures_func1_1_pc39_1:
pcdata $2, $-2
pcdata $0, $-2
movq 8(SP), BP
addq $16, SP
ret
PCDATA $2, $-2
PCDATA $0, $-2
MOVQ 8(SP), BP
ADDQ $16, SP
RET
Closures_func1_1_pc49_1:
.loc 1 10 0
pcdata $2, $0
pcdata $0, $0
call runtime.printlock(SB)
movq $1, (SP)
call runtime.printint(SB)
call runtime.printunlock(SB)
jmp Closures_func1_1_pc39_1
PCDATA $2, $0
PCDATA $0, $0
CALL runtime.printlock(SB)
MOVQ $1, (SP)
CALL runtime.printint(SB)
CALL runtime.printunlock(SB)
JMP Closures_func1_1_pc39_1
Closures_func1_1_pc74_1:
nop
NOP
.loc 1 8 0
pcdata $0, $-1
pcdata $2, $-1
call runtime.morestack_noctxt(SB)
jmp Closures_func1_1_pc0_1
PCDATA $0, $-1
PCDATA $2, $-1
CALL runtime.morestack_noctxt(SB)
JMP Closures_func1_1_pc0_1
Closures_func1_pc0:
.loc 1 7 0
text "".Closures.func1(SB), $16-0
movq (TLS), CX
cmpq SP, 16(CX)
jls Closures_func1_pc83
subq $16, SP
movq BP, 8(SP)
leaq 8(SP), BP
funcdata $0, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB)
funcdata $1, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB)
funcdata $3, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB)
TEXT "".Closures.func1(SB), $16-0
MOVQ (TLS), CX
CMPQ SP, 16(CX)
JLS Closures_func1_pc83
SUBQ $16, SP
MOVQ BP, 8(SP)
LEAQ 8(SP), BP
FUNCDATA $0, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB)
FUNCDATA $1, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB)
FUNCDATA $3, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB)
.loc 1 14 0
pcdata $2, $0
pcdata $0, $0
movq "".N(SB), AX
cmpq AX, $3
jeq Closures_func1_pc48
PCDATA $2, $0
PCDATA $0, $0
MOVQ "".N(SB), AX
CMPQ AX, $3
JEQ Closures_func1_pc48
.loc 1 15 0
cmpq AX, $4
jne Closures_func1_pc58
CMPQ AX, $4
JNE Closures_func1_pc58
Closures_func1_pc48:
pcdata $2, $-2
pcdata $0, $-2
movq 8(SP), BP
addq $16, SP
ret
PCDATA $2, $-2
PCDATA $0, $-2
MOVQ 8(SP), BP
ADDQ $16, SP
RET
Closures_func1_pc58:
pcdata $2, $0
pcdata $0, $0
call runtime.printlock(SB)
movq $1, (SP)
call runtime.printint(SB)
call runtime.printunlock(SB)
jmp Closures_func1_pc48
PCDATA $2, $0
PCDATA $0, $0
CALL runtime.printlock(SB)
MOVQ $1, (SP)
CALL runtime.printint(SB)
CALL runtime.printunlock(SB)
JMP Closures_func1_pc48
Closures_func1_pc83:
nop
NOP
.loc 1 7 0
pcdata $0, $-1
pcdata $2, $-1
call runtime.morestack_noctxt(SB)
jmp Closures_func1_pc0
PCDATA $0, $-1
PCDATA $2, $-1
CALL runtime.morestack_noctxt(SB)
JMP Closures_func1_pc0