Skip to content

Instantly share code, notes, and snippets.

View mattgodbolt's full-sized avatar
💭
Hacking on Compiler Explorer (when I can)

Matt Godbolt mattgodbolt

💭
Hacking on Compiler Explorer (when I can)
View GitHub Profile
P%=&2000
FORN%=0TO2STEP2:[OPT N%
LDY #&10
LDX #0
LDA #0
.lp
STA &3000, X
INX
BNE lp
INC lp + 2
@mattgodbolt
mattgodbolt / results.txt
Created January 30, 2016 22:09
Results of static branch prediction attempts
model name : Intel(R) Core(TM) i5 CPU M 520 @ 2.40GHz
c.f. https://github.com/mattgodbolt/agner
******************************************************************************
Ahead not taken
******************************************************************************
Processor 0
Clock Core cyc Instruct BrTaken BrMispred
548996 517178 1501711 0 3
500608 500606 1501707 0 2
CLS
PRINT "**********************************"
PRINT "**********************************"
PRINT "** PLEASE ENTER THE NUCLEAR KEY **"
PRINT "**********************************"
PRINT "**********************************"
REPEAT
PRINT "Key ";
INPUT A$
PRINT "SORRY WRONG KEY!!!"
DIM b% 32
P% = b%
[OPT2
BRK
EQUB 42
EQUS "StackExchange"
EQUB 0
]
CALL b%
[pid 2066] openat(AT_FDCWD, "/opt", O_RDONLY|O_CLOEXEC|O_PATH|O_DIRECTORY) = 4
[pid 2066] name_to_handle_at(4, "wine-stable", {handle_bytes=128 => 8, handle_type=1, f_handle=0xab090400d0e41824}, [550], 0) = 0
[pid 2066] name_to_handle_at(4, "", {handle_bytes=128 => 144}, 0x7ffd319e2e54, AT_EMPTY_PATH) = -1 EOVERFLOW (Value too large for defined data type)
[pid 2066] name_to_handle_at(4, "", {handle_bytes=144}, 0x7ffd319e2e54, AT_EMPTY_PATH) = -1 EINVAL (Invalid argument)
utils = require('utils');
hw = utils.hexword;
hb = utils.hexbyte;
every = 0;
function spew(pc) {
console.log(`${processor.currentCycles} $${hw(pc)} A=${hb(processor.a)} X=${hb(processor.x)} Y=${hb(processor.y)}`);
// breakpoint every 100 instructions lest things go awry.
return ((++every % 100) === 0);
}
@mattgodbolt
mattgodbolt / render.asm
Created August 22, 2019 22:20
A bit of Red Dog: Superior Firepower's rendering system. SH4 Assembly, circa 1998
; All new, all-singing, all-dancing textured scape renderer!
.CPU SH4
.OUTPUT DBG=DWARF
.INCLUDE "..\RedDog.pre"
; Prototype: StripHeader *texturedStripRasteriserClipped
; (StripPos *v, StripEntry *strip, Uint32 nStrip, ModelContext *context);
; Register allocation:
temp: .REG R0 ; temporary register, R0 is most accessible
10P.CHR$158;CHR$145;CHR$255;CHR$146;CHR$147;CHR$148;CHR$149
int libraryFunc() { return 1; }
ubuntu@ip-172-30-2-164:/opt/gcc-explorer/windows$ cd /opt/gcc-explorer/windows
ubuntu@ip-172-30-2-164:/opt/gcc-explorer/windows$ tree
.
├── 10.0.10240.0
│   └── ucrt
│   ├── assert.h
│   ├── complex.h
│   ├── conio.h
│   ├── corecrt.h
│   ├── corecrt_io.h