Сборный / Говнокод #27782 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
.org 80h
data:
	db "Hello, world!\n"
	db 0
start:
	mov %c 1h
	mov %bp @data
	mov %si 0
	.loop:
		mov %al [%si + %bp]
		inc %si
		cmp %al 0h
		jz @.exit
		int 5h
		jmp @.loop
	.exit:
	int 0h

  0080  48 65 6C 6C 6F 20 77 6F 72 6C 64 21 0A 00 02 02
  0090  01 00 02 06 80 00 02 05 00 00 03 0A 38 09 05 0C
  00A0 0A 00 00 0E AB 00 0B 05 0D 9A 00 0B 00 00 00 00

накодил виртуальную машину, заспидранил Hello World за четыре дня. рекорд.
https://github.com/kcalbSphere/PVC-16

digitalEugene digitalEugene, (Updated )

Комментарии (26, +26)

Сборный / Говнокод #27567 Ссылка на оригинал

0

  1. 1
– Вот то-то и оно… – проговорила, Марго вытирая салфеткой губы, – любишь. А эта блядища этого не ценит!

- Давай-ка задом, мила, - я шлёпнул Елену по ляжке, и она неловко перевернулась, встала на колени, высоко подняла зад.

Chupacabramiamor Chupacabramiamor, (Updated )

Комментарии (0)

Сборный / Говнокод #27418 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
  46. 46
  47. 47
  48. 48
  49. 49
  50. 50
  51. 51
  52. 52
  53. 53
  54. 54
  55. 55
  56. 56
  57. 57
  58. 58
  59. 59
  60. 60
  61. 61
  62. 62
  63. 63
  64. 64
  65. 65
  66. 66
  67. 67
  68. 68
  69. 69
  70. 70
  71. 71
  72. 72
  73. 73
  74. 74
  75. 75
  76. 76
  77. 77
  78. 78
  79. 79
  80. 80
  81. 81
  82. 82
  83. 83
  84. 84
  85. 85
  86. 86
  87. 87
  88. 88
  89. 89
.ALIAS HALT 10h
.ALIAS VBI   0h
.ALIAS VPUSCRADDR 3000h
.ALIAS VPUATRADDR 3002h
.ALIAS VPUCTRL 3004h
.ALIAS VPUCTRL_WH 3005h
.ALIAS VPUCTRL_F 3006h
.ALIAS VPUCTRL_VBI 0
.ALIAS VPUCTRL_ACT 1
.ALIAS VPUCTRL_TICK 2

.ALIAS W 10
.ALIAS H 5

.ALIAS I   %BL
.ALIAS PTR %C

.ORG 2000h SCR:
.ORG 2100h ATR:

.ORG #VBI
DD @VBI

.ORG 30h
DATA:

.ORG 40h
STATE:
	X: DB 0
	
.ORG 80h
_START:
	SET   %AL #VPUCTRL_VBI
	SET   %AL #VPUCTRL_ACT
	STORE %AL #VPUCTRL_F
	MOV   %AL #H
	SHL   %AL 4
	OR    %AL #W

	STORE %AL #VPUCTRL_WH
	
	MOV   %A @SCR
	STORE %A #VPUSCRADDR
	MOV   %A @ATR
	STORE %A #VPUATRADDR
	
	LOAD  %AL #VPUCTRL_F
	SET   %AL #VPUCTRL_TICK
	STORE %AL #VPUCTRL_F
	STORE %AL #VPUCTRL_F
	LOOP:
	JMP @LOOP

VBI:
	PUSH  %A
	PUSH  %B
	PUSH  %C
	
	LOAD  %AL @X
	ADD   %AL 1
	
	CMP   %AL #W JNE @VBI_CONTINUE
	XOR   %AL %AL     VBI_CONTINUE:
	STORE %AL @X
	
	CMP   %AL 0  JNE @VBI_ELSE
		MOV   #PTR @SCR
		ADD   #PTR #W
		SUB   #PTR 1
		STORE #PTR %AL 
		JMP @VBI_SKIP
	
	VBI_ELSE:
		MOV   #PTR @SCR
		ADD   #PTR %AL
		SUB   #PTR 1
		MOV   %BH 0
		STORE #PTR %BH
	VBI_SKIP:

	MOV   #PTR @SCR
	ADD   #PTR %AL
	MOV   %BH  FFh
	STORE #PTR %BH
	
	POP %C
	POP %B
	POP %A
	RET

похождения моей ебанутой вмки продолжаются.
bormand сказало что писать подставным прерыванием в консольку это читерство. реализовал видеовывод. теперь нормально? (слегка криво, и на
атрибуты вмке похуй, как и мне.)

вопреки моим огромным сомнениям, выдает 600 фпс даже на моей скромной конфигурации.

https://imgur.com/fdLlQvx

digitalEugene digitalEugene, (Updated )

Комментарии (7, +7)

Сборный / Говнокод #27218 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
  46. 46
  47. 47
  48. 48
  49. 49
  50. 50
  51. 51
  52. 52
  53. 53
  54. 54
  55. 55
  56. 56
  57. 57
  58. 58
  59. 59
  60. 60
  61. 61
  62. 62
  63. 63
  64. 64
  65. 65
  66. 66
  67. 67
  68. 68
  69. 69
  70. 70
  71. 71
  72. 72
  73. 73
  74. 74
format PE64 GUI 5.0
include 'win64a.inc'
entry $
   xor    rdi,rdi
   push   rdi
   push   rdi
   push   rdi;$400000
   push   rdi
   push   rdi
   mov    rax,CW_USEDEFAULT
   push   rax
   push   rax
   push   rax
   push   rax
   push   rdi
   push   rdi
   push   rdi
   push   rdi
   mov    r9,WS_VISIBLE+WS_OVERLAPPEDWINDOW
   mov    r8,_title
   mov    rdx,_class
   mov    rcx,rdi
   call   [CreateWindowEx]
   mov    r8,WindowProc
   mov    rdx,-4
   mov    rcx,rax
   call   [SetWindowLongPtrA]
   mov    qword[_title],rax
   pop    rdi
   mov    rsi,rsp
   xor    rbx,rbx
   mov    bl,40
@@:sub    rsp,rbx
   xor    r9,r9
   xor    r8,r8
   xor    rdx,rdx
   mov    rcx,rsi
   call   [GetMessage]
   mov    rcx,rsi
   call   [DispatchMessage]
   add    rsp,rbx
   jmp    @b
WindowProc:
   push   r9
   cmp    rdx,WM_CLOSE
   je     app_close
defwndproc:
   push   rdi
   push   rdi
   push   rdi
   push   rdi
   mov    r9,r8
   mov    r8,rdx
   mov    rdx,rcx
   mov    rcx,qword[_title]
   call   [CallWindowProc]
   pop    rdi
   pop    rdi
   pop    rdi
   pop    rdi
   pop    rdi
   ret
app_close:
   call   [exit]
  _title db '1KBytex64',0
  _class db '#32770',0
data import
  library\
    user32,'USER32.DLL',\
    msvcrt,'msvcrt.dll'
  include 'api\user32.inc'
  import msvcrt,\
    exit,'_exit'
end data

Ничего интересного, просто извращённый 1KBytex64

chiacorp chiacorp, (Updated )

Комментарии (2, +2)

Сборный / Говнокод #27216 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
  46. 46
  47. 47
  48. 48
  49. 49
  50. 50
  51. 51
  52. 52
  53. 53
  54. 54
  55. 55
  56. 56
  57. 57
  58. 58
  59. 59
  60. 60
  61. 61
  62. 62
  63. 63
  64. 64
  65. 65
  66. 66
  67. 67
  68. 68
  69. 69
  70. 70
  71. 71
  72. 72
  73. 73
  74. 74
  75. 75
  76. 76
  77. 77
  78. 78
  79. 79
  80. 80
  81. 81
  82. 82
  83. 83
  84. 84
  85. 85
  86. 86
  87. 87
  88. 88
  89. 89
  90. 90
  91. 91
  92. 92
  93. 93
  94. 94
  95. 95
  96. 96
  97. 97
  98. 98
  99. 99
  100. 100
format pe console
   include 'win32ax.inc'
macro call1 f,p1{
   mov    ebx,p1
   call   f}
macro call2 f,p1,p2{
   mov    ecx,p2
   call1  f,p1}
macro call3 f,p1,p2,p3{
   mov    edx,p3
   call2  f,p1,p2}
.data
   lead_time dd ?
   handle_input dd ?
   handle_output dd ?
   byte_read_write dd ?
.code
   string db 'govnokod.ru ',13,10,0
   array_procs dd __strlen,_strlen,strlen,0
putdword:;ebx-handle,ecx-byte
   mov    eax,esp
   mov    esi,eax
   sub    esp,16
   xchg   eax,ecx
   mov    edi,10
@@:xor    edx,edx
   div    edi
   add    dl,'0'
   dec    ecx
   mov    [ecx],dl
   test   eax,eax
   jnz    @b
   sub    esi,ecx
   mov    edx,esi
   invoke WriteFile,ebx,ecx,edx,byte_read_write,0
   add    esp,16
   ret
align 4
strlen:;ebx-array of char
   mov    eax,12
   ret
align 4
_strlen:;ebx-array of char
   clc
   xor    ecx,ecx
   dec    ecx
   mov    edi,ebx
   xor    al,al
   repne  scasb
   not    ecx
   dec    ecx
   mov    eax,ecx
   ret
align 4
__strlen:;ebx-array of char
   xor    eax,eax
   dec    eax
@@:inc    eax
   cmp    byte[ebx+eax],0
   jne    @b
   ret
start:
   invoke GetStdHandle,STD_INPUT_HANDLE
   mov    [handle_input],eax
   invoke GetStdHandle,STD_OUTPUT_HANDLE
   mov    [handle_output],eax
   mov    ebp,array_procs
next_step:
   call   [GetTickCount]
   mov    [lead_time],eax
   xor    ecx,
@@:push   ecx
   mov    ebx,string
   call   dword[ebp]
   pop    ecx
   loop   @b
   push   eax
   call   [GetTickCount]
   sub    eax,[lead_time]
   mov    ecx,1000
   xor    edx,edx
   div    ecx
   push   edx
   call2  putdword,[handle_output],eax
   invoke WriteFile,ebx,string+8,1,byte_read_write,0
   pop    ecx
   call2  putdword,[handle_output],ecx
   invoke WriteFile,ebx,string+11,1,byte_read_write,0
   pop    ecx
   call2  putdword,[handle_output],ecx
   invoke WriteFile,[handle_output],string+12,2,byte_read_write,0
   add    ebp,4
   cmp    dword[ebp],0
   jne    next_step
   call   [GetTickCount]
   mov    [lead_time],eax
   invoke SetConsoleMode,[handle_input],0
   invoke ReadFile,[handle_input],byte_read_write,1,byte_read_write,0
   invoke ExitProcess,0
.end start

Поговнокодим однако.
Зачем в процессоре занимают место команды типа repne scasb и прочее, если простые аналоги быстрее компактнее и проще встраивать в алгоритм без отдельной подпрограммы да и регистров в разы меньше требуется. Пустая подпрограмма для понимания сколько времени занимает лишний код. Есть предположение что раньше на заре развития они работали шустрее, но это только предположение.

chiacorp chiacorp, (Updated )

Комментарии (11, +11)

Сборный / Говнокод #27205 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
includelib  C:\Irvine\User32.Lib
includelib  C:\Irvine\Kernel32.Lib
includelib  D:\masm32\lib\Irvine32.lib
include     \masm32\include\Irvine32.inc

; D:/masm32/bin/ml.exe /c  /coff  "D:\asm\rcl.asm"
; D:/masm32\bin\link.exe /subsystem:console  "D:\asm\rcl.obj"

.data

  
.code
main PROC
  xor eax, eax
  xor edx , edx
  
  mov al , 10101010b
  
  cmp al,80h
  jns just
  shr al,1
  jmp print
  
  just:
 
  shr al,1
  or ax,80h
 
  print:
  call WriteBin
		
	exit
	main ENDP
END main

Дай бог здоровья товарищу Ирвину.

Madhouse_camomile Madhouse_camomile, (Updated )

Комментарии (16, +16)

Сборный / Говнокод #26904 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
  46. 46
  47. 47
  48. 48
  49. 49
  50. 50
  51. 51
  52. 52
  53. 53
  54. 54
  55. 55
  56. 56
  57. 57
  58. 58
  59. 59
  60. 60
  61. 61
  62. 62
  63. 63
  64. 64
  65. 65
  66. 66
  67. 67
  68. 68
  69. 69
  70. 70
  71. 71
  72. 72
  73. 73
  74. 74
  75. 75
  76. 76
  77. 77
  78. 78
  79. 79
  80. 80
  81. 81
  82. 82
  83. 83
  84. 84
  85. 85
  86. 86
  87. 87
  88. 88
  89. 89
  90. 90
  91. 91
  92. 92
  93. 93
  94. 94
  95. 95
  96. 96
  97. 97
  98. 98
  99. 99
lea esi, cpu_name
    mov eax, 0
    mov mreg, eax

    ;[04/12] G
    mov eax, 0ffh
    and eax, ebx
    mov mreg, eax
    mov al, byte ptr [mreg]
    mov [esi], al
    inc esi

    ;[03/12] e
    mov eax, 0ff00h
    and eax, ebx
    mov mreg, eax
    mov al, byte ptr [mreg + 1]
    mov [esi], al
    inc esi

    ;[02/12] n
    mov eax, 0ff0000h
    and eax, ebx
    mov mreg, eax
    mov al, byte ptr [mreg + 2]
    mov [esi], al
    inc esi

    ;[01/12] u
    mov eax, 0ff000000h
    and eax, ebx
    mov mreg, eax
    mov al, byte ptr [mreg + 3]
    mov [esi], al
    inc esi

    ;[08/12] i
    mov eax, 0ffh
    and eax, edx
    mov mreg, eax
    mov al, byte ptr [mreg]
    mov [esi], al
    inc esi

    ;[07/12] n
    mov eax, 0ff00h
    and eax, edx
    mov mreg, eax
    mov al, byte ptr [mreg + 1]
    mov [esi], al
    inc esi

    ;[06/12] e
    mov eax, 0ff0000h
    and eax, edx
    mov mreg, eax
    mov al, byte ptr [mreg + 2]
    mov [esi], al
    inc esi

    ;[05/12] I
    mov eax, 0ff000000h
    and eax, edx
    mov mreg, eax
    mov al, byte ptr [mreg + 3]
    mov [esi], al
    inc esi

    ;[12/12] n
    mov eax, 0ffh
    and eax, ecx
    mov mreg, eax
    mov al, byte ptr [mreg]
    mov [esi], al
    inc esi

    ;[11/12] t
    mov eax, 0ff00h
    and eax, ecx
    mov mreg, eax
    mov al, byte ptr [mreg + 1]
    mov [esi], al
    inc esi

    ;[10/12] e
    mov eax, 0ff0000h
    and eax, ecx
    mov mreg, eax
    mov al, byte ptr [mreg + 2]
    mov [esi], al
    inc esi

    ;[09/12] l
    mov eax, 0ff000000h
    and eax, ecx
    mov mreg, eax
    mov al, byte ptr [mreg + 3]
    mov [esi], al
    inc esi

oaoaoammm oaoaoammm, (Updated )

Комментарии (224, +224)

Сборный / Говнокод #26232 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
СТРАЙКЕР СОСЁТ МОЙ ХУЙ
СТРАЙКЕР СОСЁТ МОЙ ХУЙ
СТРАЙКЕР СОСЁТ МОЙ ХУЙ
СТРАЙКЕР СОСЁТ МОЙ ХУЙ
СТРАЙКЕР СОСЁТ МОЙ ХУЙ
СТРАЙКЕР СОСЁТ МОЙ ХУЙ
СТРАЙКЕР СОСЁТ МОЙ ХУЙ
СТРАЙКЕР СОСЁТ МОЙ ХУЙ
СТРАЙКЕР СОСЁТ МОЙ ХУЙ
СТРАЙКЕР СОСЁТ МОЙ ХУЙ

СТРАЙКЕР СОСЁТ МОЙ ХУЙ
СТРАЙКЕР СОСЁТ МОЙ ХУЙ
СТРАЙКЕР СОСЁТ МОЙ ХУЙ
СТРАЙКЕР СОСЁТ МОЙ ХУЙ
СТРАЙКЕР СОСЁТ МОЙ ХУЙ
СТРАЙКЕР СОСЁТ МОЙ ХУЙ
СТРАЙКЕР СОСЁТ МОЙ ХУЙ

xyu_100cm xyu_100cm, (Updated )

Комментарии (0)