make wozmon.s (in dev container)

This commit is contained in:
Paul Mathieu 2025-09-14 15:35:10 +02:00
parent 789fa1306c
commit 45a0b8ca68

266
wozmon.s Normal file
View File

@ -0,0 +1,266 @@
.arch i8086,jumps
.code16
.att_syntax prefix
#NO_APP
.text
.type _ZN12_GLOBAL__N_14putcEh, @function
_ZN12_GLOBAL__N_14putcEh:
movw %sp, %bx
movb 2(%bx), %al
#APP
;# 21 "wozmon.cc" 1
mov %al, %al
mov $0x0e, %ah
int $0x10
;# 0 "" 2
#NO_APP
ret
.size _ZN12_GLOBAL__N_14putcEh, .-_ZN12_GLOBAL__N_14putcEh
.type _ZN12_GLOBAL__N_17ReadHexEPKc, @function
_ZN12_GLOBAL__N_17ReadHexEPKc:
pushw %si
pushw %di
pushw %bp
movw %sp, %bp
pushw %ds
pushw %ds
movw 8(%bp), %ax
movw %ax, -2(%bp)
.L5:
movw -2(%bp), %bx
cmpb $32, (%bx)
jne .L4
incw -2(%bp)
jmp .L5
.L4:
xorw %di, %di
movw %di, %ax
movw %di, %dx
movb $4, %ch
.L9:
movw %di, %bx
movw -2(%bp), %si
movb (%bx,%si), %cl
cmpb $57, %cl
ja .L6
addb $-48, %cl
.L12:
movb %cl, %bl
cmpb $15, %cl
ja .L3
movw %ax, %si
movb $12, %cl
shrw %cl, %si
movb %ch, %cl
shlw %cl, %dx
orw %si, %dx
shlw %cl, %ax
movb %bl, -4(%bp)
movb -4(%bp), %bl
xorb %bh, %bh
addw %bx, %ax
movw $0, %bx
adcw %bx, %dx
incw %di
cmpw $8, %di
jne .L9
.L3:
movw %bp, %sp
popw %bp
popw %di
popw %si
ret
.L6:
addb $-87, %cl
jmp .L12
.size _ZN12_GLOBAL__N_17ReadHexEPKc, .-_ZN12_GLOBAL__N_17ReadHexEPKc
.type _ZN12_GLOBAL__N_114WriteHexNibbleEh, @function
_ZN12_GLOBAL__N_114WriteHexNibbleEh:
pushw %bp
movw %sp, %bp
movb 4(%bp), %al
movb %al, %dl
xorb %dh, %dh
cmpw $9, %dx
jle .L14
addb $87, %al
.L16:
movb %al, 4(%bp)
popw %bp
jmp _ZN12_GLOBAL__N_14putcEh
.L14:
addb $48, %al
jmp .L16
.size _ZN12_GLOBAL__N_114WriteHexNibbleEh, .-_ZN12_GLOBAL__N_114WriteHexNibbleEh
.section .text.startup,"ax",@progbits
.global main
.type main, @function
main:
pushw %si
pushw %di
pushw %es
pushw %bp
movw %sp, %bp
subw $76, %sp
leaw -64(%bp), %di
movw $64, %ax
pushw %ax
xorw %ax, %ax
movw %ax, %es
pushw %ax
pushw %di
call memset
addw $6, %sp
movw %es, %si
movw %es, -70(%bp)
.L18:
#APP
;# 11 "wozmon.cc" 1
mov $0x00, %ah
int $0x16
;# 0 "" 2
#NO_APP
pushw %ax
movb %al, -71(%bp)
call _ZN12_GLOBAL__N_14putcEh
addw $2, %sp
movb -71(%bp), %al
cmpb $13, %al
jne .L19
movb $0, (%di)
leaw -64(%bp), %bx
cmpw %bx, %di
jne .L21
addw $4, %si
adcw $0, -70(%bp)
.L22:
movw %si, %ax
andw $-4, %ax
movw %ax, %es
movw -70(%bp), %di
movw $8, %bx
.L25:
movw %ax, -76(%bp)
movw %bx, -74(%bp)
movb $12, %cl
movb %cl, -71(%bp)
pushw -68(%bp)
call _ZN12_GLOBAL__N_114WriteHexNibbleEh
movw -76(%bp), %ax
movw %ax, %dx
movb -71(%bp), %cl
shrw %cl, %dx
movb $4, %cl
shlw %cl, %di
shlw %cl, %ax
orw %dx, %di
addw $2, %sp
movw -74(%bp), %bx
decw %bx
jne .L25
movb $58, %al
pushw %ax
call _ZN12_GLOBAL__N_14putcEh
movw %es, %di
leaw 4(%di), %cx
addw $2, %sp
.L26:
movw %cx, -74(%bp)
movb $32, %al
pushw %ax
call _ZN12_GLOBAL__N_14putcEh
movb (%di), %dl
movb %dl, %al
movb %dl, -71(%bp)
xorb %ah, %ah
movb $4, %cl
sarw %cl, %ax
pushw %ax
call _ZN12_GLOBAL__N_114WriteHexNibbleEh
movb -71(%bp), %dl
andb $15, %dl
pushw %dx
call _ZN12_GLOBAL__N_114WriteHexNibbleEh
incw %di
addw $6, %sp
movw -74(%bp), %cx
cmpw %di, %cx
jne .L26
movb $13, %al
pushw %ax
call _ZN12_GLOBAL__N_14putcEh
movb $10, %al
pushw %ax
call _ZN12_GLOBAL__N_14putcEh
addw $4, %sp
xorw %bx, %bx
leaw -64(%bp), %di
.L29:
movb (%bx,%di), %al
testb %al, %al
je .L18
cmpb $58, %al
je .L28
incw %bx
jmp .L29
.L32:
xchgw %ax, %di
jmp .L18
.L21:
movb (%bx), %al
testb %al, %al
je .L23
cmpb $114, %al
je .L24
incw %bx
jmp .L21
.L19:
cmpb $127, %al
jne .L30
decw %di
leaw -64(%bp), %ax
cmpw %ax, %di
jc .L32
movb $8, %al
pushw %ax
movb %al, -71(%bp)
call _ZN12_GLOBAL__N_14putcEh
movb $32, %dl
pushw %dx
call _ZN12_GLOBAL__N_14putcEh
movb -71(%bp), %al
pushw %ax
call _ZN12_GLOBAL__N_14putcEh
addw $6, %sp
jmp .L18
.L30:
movb %al, (%di)
incw %di
jmp .L18
.L24:
call *%si
jmp .L22
.L23:
leaw -64(%bp), %ax
pushw %ax
call _ZN12_GLOBAL__N_17ReadHexEPKc
addw $2, %sp
xchgw %ax, %si
movw %dx, -70(%bp)
movb $10, %al
pushw %ax
call _ZN12_GLOBAL__N_14putcEh
addw $2, %sp
jmp .L22
.L28:
leaw 1(%bx,%di), %bx
pushw %bx
call _ZN12_GLOBAL__N_17ReadHexEPKc
addw $2, %sp
movw %ax, (%si)
movw %dx, 2(%si)
jmp .L18
.size main, .-main
.ident "GCC: (GNU) 6.3.0"