- 1
;(
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
Всего: 44
0
;(
Что-ж, говнокод умер окончательно. Война ботов привела к двум последовательным победам, и завершилась съебыванием нахуй людей с ботопомойки. Господа, это того стоило?
+1
#include <stdio.h>
#include <stdint.h>
int main(void)
{
bool a = 0;
*((uint8_t*)&a) = 2;
if(!a)
printf("a false\n");
else
printf("a true\n");
return 0;
}
------
.LC1:
.string "a true"
main:
push rax
mov edi, OFFSET FLAT:.LC1
call puts
xor eax, eax
pop rdx
ret
какой ID)))
+1
.org 22h
dw @vbi
.org 80h
bpos: db 0h 0h
vector: db 2h 1h
process:
push %a
push %b
mov %a [@bpos] ; {h:x, l:y} ;
mov %b [@vector] ; {h:dx, l:dy} ;
add %ah %bh
add %al %bl
cmp %ah 11h
jng @.skip_xoverflow_handle
cmp %ah 14h
jg @.overflow_left
mov %ah 11h
jmp @.xoverflow_finally
.overflow_left:
mov %ah 0h
.xoverflow_finally:
neg %bh
.skip_xoverflow_handle:
cmp %al 5Ch
jng @.skip_yoverflow_handle
cmp %al 60h
jg @.overflow_up
mov %al 5Bh
jmp @.yoverflow_finally
.overflow_up:
mov %al 1h
.yoverflow_finally:
neg %bl
.skip_yoverflow_handle:
mov [@bpos] %a
mov [@vector] %b
pop %b
pop %a
ret
cls:
push %a
push %b
mov %a 3A98h
.loop:
mov [%a + @T1] 0000h
sub %a 2h
jnz @.loop
pop %b
pop %a
ret
render:
push %a
push %b
push %c
mov %a [@bpos] ; {h:x, l:y} ;
mov %b %al
mul %b 12h
add %b %ah
add %b @T1
mov %c 8h
.loop:
movb [%b] FFh
add %b 12h
dec %c
jnz @.loop
pop %c
pop %b
pop %a
ret
start:
mov %sp FFFFh
outb 20h 1h
outb 21h 16h
out 22h @T1
mov %al 1h
int 10h
.loop:
jmp @.loop
vbi:
call @cls
call @render
call @process
ret
.org 1000h
T1:
решил пойти по накатанному пути и добавил видеоконтроллер, пока только монохромная битовая карта 144x100, но большего и не надо
сабж выводит на экран что отпрыгивает от стен, простое умножение компонента вектора на -1
0
#include <stdio.h>
#include <setjmp.h>
#include <assert.h>
jmp_buf ebuf;
void f2(void)
{
longjmp(ebuf, (int)"kokoko");
}
int main(void)
{
const char* i;
printf("petuhi ");
i = (const char*)setjmp(ebuf);
if (!i)
{
f2();
printf ("moo ");
}
printf("%s\n", i);
return 0;
}
можно елду сделать
0
.org 80h
data:
db "Hello, world!\n"
wait:
.loop:
inb %cl E9h
cmp %cl 0h
jnz @.loop
ret
start:
mov %sp 300h
.loop:
mov %al [%b + @data]
inc %b
outb E9h %al
call @wait
cmp %al Ah
jnz @.loop
int 0h
забацал port-mapped io, работает в отдельном потоке
sudo bormand
0
std::tie(v[0], v[1]) = std::make_tuple(v[1], v[0])
какой swap)))
0
std::tie(v[0], v[1]) = std::make_tuple(v[1], v[0])
какой swap)))
0
#define OPCODEFORMAT_CASE(opcode, format) case opcode: return format; break
inline OpcodeFormat getOpcodeFormat(Opcode opcode)
{
switch (opcode)
{
OPCODEFORMAT_CASE(NOP , OPCODE);
OPCODEFORMAT_CASE(MOV_RR , OPCODE_RR);
OPCODEFORMAT_CASE(MOV_RC , OPCODE_RC);
OPCODEFORMAT_CASE(MOV_RM , OPCODE_RM);
OPCODEFORMAT_CASE(MOV_MR , OPCODE_MR);
OPCODEFORMAT_CASE(MOV_MC , OPCODE_MC);
OPCODEFORMAT_CASE(MOV_MM , OPCODE_MM);
OPCODEFORMAT_CASE(ADD , OPCODE_RR);
OPCODEFORMAT_CASE(SUB , OPCODE_RR);
OPCODEFORMAT_CASE(ADD_C , OPCODE_RC);
OPCODEFORMAT_CASE(SUB_C , OPCODE_RC);
OPCODEFORMAT_CASE(MUL , OPCODE_RR);
OPCODEFORMAT_CASE(DIV , OPCODE_RR);
OPCODEFORMAT_CASE(MUL_C , OPCODE_RC);
OPCODEFORMAT_CASE(DIV_C , OPCODE_RC);
OPCODEFORMAT_CASE(LEA , OPCODE_RM);
OPCODEFORMAT_CASE(INC , OPCODE_R);
OPCODEFORMAT_CASE(DEC , OPCODE_R);
OPCODEFORMAT_CASE(INT , OPCODE_C8);
OPCODEFORMAT_CASE(CMP_RC , OPCODE_RC);
OPCODEFORMAT_CASE(JMP , OPCODE_C);
OPCODEFORMAT_CASE(JZ , OPCODE_C);
OPCODEFORMAT_CASE(JNZ , OPCODE_C);
OPCODEFORMAT_CASE(JG , OPCODE_C);
OPCODEFORMAT_CASE(JNG , OPCODE_C);
OPCODEFORMAT_CASE(JGZ , OPCODE_C);
OPCODEFORMAT_CASE(JL , OPCODE_C);
OPCODEFORMAT_CASE(CALL , OPCODE_C);
OPCODEFORMAT_CASE(PUSH_R , OPCODE_R);
OPCODEFORMAT_CASE(PUSH_C , OPCODE_C);
OPCODEFORMAT_CASE(PUSH_C8 , OPCODE_C8);
OPCODEFORMAT_CASE(POP_R , OPCODE_R);
OPCODEFORMAT_CASE(POP , OPCODE);
OPCODEFORMAT_CASE(POP8 , OPCODE);
OPCODEFORMAT_CASE(POP_M8 , OPCODE_M);
OPCODEFORMAT_CASE(POP_M16 , OPCODE_M);
OPCODEFORMAT_CASE(OUT_M8 , OPCODE_MC);
OPCODEFORMAT_CASE(OUT_M16 , OPCODE_MC);
OPCODEFORMAT_CASE(OUT_C8 , OPCODE_CC8);
OPCODEFORMAT_CASE(OUT_C16 , OPCODE_CC);
OPCODEFORMAT_CASE(OUT_R , OPCODE_RC);
OPCODEFORMAT_CASE(IN_R , OPCODE_RC);
OPCODEFORMAT_CASE(IN_M8 , OPCODE_MC);
OPCODEFORMAT_CASE(IN_M16 , OPCODE_MC);
OPCODEFORMAT_CASE(RET , OPCODE);
default: return (OpcodeFormat)0xFF; break;
}
}
#undef OPCODEFORMAT_CASE
отрефакторил
0
std::vector<Token> Tokenizer::coreTokenize(std::string src)
{
const boost::escaped_list_separator<char> els("\\"s, " \n\t"s, "\";");
boost::replace_all(src, "\"", R"("\")");
boost::replace_all(src, ";", ";\\;");
boost::replace_all(src, "\\n", "\\\\n");
boost::replace_all(src, "\n", "\\n");
const boost::tokenizer tok(src, els);
std::vector<Token> tokens;
std::ranges::copy(tok, std::back_inserter(tokens));
bool (std::string::*starts_with) (char const) const = &std::string::starts_with;
std::remove_if(tokens.begin(), tokens.end(), boost::bind(starts_with, boost::placeholders::_1, ';'));
return tokens;
}
захотел добавить в свой компилятор подсветку ошибок. пришлось накостылить.
+1
#include <iostream>
int main(void)
{
char sep = '\n' /1\
; int i = 68 /1 \
; while (i --- 1\
\
/1/1/1 /1\
/1\
/1\
/1\
/1\
/ 1\
/ 1 \
/ 1 \
/ 1 \
/1 /1 \
/1 /1 \
/1 /1 /1/1> 0) std::cout \
<<i<< sep;
return 0;
}
https://stackoverflow.com/a/65856842