- 1
- 2
- 3
unsigned three = 1;
unsigned five = 5;
unsigned seven = 7;
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+2
unsigned three = 1;
unsigned five = 5;
unsigned seven = 7;
https://github.com/torvalds/linux/blob/d158fc7f36a25e19791d25a55da5623399a2644f/fs/ext4/resize.c#L698
0
#include <stdio.h>
#include <string.h>
double emit_fmadd(double a, double b, double c) __attribute ((noinline));
double emit_fmadd(double a, double b, double c)
{
return a*b+c;
}
int main(void)
{
double a = 10.0000;
double b = 1.00001;
double c = 1.001;
double res = emit_fmadd(a,b,c);
unsigned char arr[sizeof(res)];
memcpy(arr, &res, sizeof(res));
for (int i = 0; i < sizeof(res); i++)
{
printf("%.2x ", arr[i]);
}
printf("\n");
}
/*
gcc -O3 -march=skylake
emit_fmadd:
vfmadd132sd xmm0, xmm2, xmm1
ret
gcc -O3 -march=x86-64
emit_fmadd:
mulsd xmm0, xmm1
addsd xmm0, xmm2
ret
*/
Вот к чему плавучий питух приводит!
https://godbolt.org/z/sP19zP
+3
// https://deadlockempire.github.io/
// Игра, где надо играть за планировщик чтоб вызвать дедлок
// https://deadlockempire.github.io/#2-flags
// First Army
while (true) {
while (flag != false) {
;
}
flag = true;
critical_section();
flag = false;
}
// Second Army
while (true) {
while (flag != false) {
;
}
flag = true;
critical_section();
flag = false;
}
The day finally came. The Deadlock Empire opened its gates and from them surged massive amounts of soldiers, loyal servants of the evil Parallel Wizard. The Wizard has many strengths - his armies are fast, and he can do a lot of stuff that we can't. But now he set out to conquer the world, and we cannot have that.
You are our best Scheduler, commander! We have fewer troops and simpler ones, so we will need your help. Already two armies of the Deadlock Empire are approaching our border keeps. They are poorly equipped and poorly trained, however. You might be able to desync them and break their morale.
0
static int callback_from_db_message(void *data, int argc, char **argv, char **azColName) {
int *userSocket = data;
long time = atol(argv[1]);
bool edit = atoi(argv[2]);
char *sTime = mx_strnew(26);
ctime_r(&time, sTime);
char *buffer = new_messageClient1(argv[0], argv[3],sTime,edit);
usleep(10000);
int receive = send(*userSocket, buffer, mx_strlen(buffer), 0);
return argc - argc + mx_strlen(azColName[0] ? "" : "0") - mx_strlen(azColName[0] ? "" : "0");
}
Компилятор жалуется, что не используется переменная?
И при быстром отправке в сокет, сообщения соединяются в один?
Вот решение!
0
#include <stdio.h>
#include <stdlib.h>
#include <inttypes.h>
int main(void)
{
uint32_t uint32max = UINT32_MAX;
int32_t int32_minus_one = -1;
printf("uint32_max = %" PRIu32 "\n", uint32max);
printf("int32_minus_one = %" PRIi32 "\n", int32_minus_one);
if (uint32max > int32_minus_one)
{
puts("uint32max > int32_minus_one");
}
else if (uint32max < int32_minus_one)
{
puts("uint32max < int32_minus_one");
}
else
{
puts("uint32max == int32_minus_one");
}
return EXIT_SUCCESS;
}
Почему в Си нет особого правила при сравнении signed и unsigned типов, ну типа если значение в signed типе отрицательно, то он полюбасу будет меньше любого unsigned значения? А то говно какое-то.
(нет, я понимаю почему так происходит, но все равно говно)
0
// https://github.com/ARMmbed/mbedtls/blob/a0832d47f7eb859f75301ae321be5dea4ccb17f3/library/aes.c#L128
/*
* Forward tables
*/
#define FT \
\
V(A5,63,63,C6), V(84,7C,7C,F8), V(99,77,77,EE), V(8D,7B,7B,F6), \
V(0D,F2,F2,FF), V(BD,6B,6B,D6), V(B1,6F,6F,DE), V(54,C5,C5,91), \
V(50,30,30,60), V(03,01,01,02), V(A9,67,67,CE), V(7D,2B,2B,56), \
V(19,FE,FE,E7), V(62,D7,D7,B5), V(E6,AB,AB,4D), V(9A,76,76,EC), \
V(45,CA,CA,8F), V(9D,82,82,1F), V(40,C9,C9,89), V(87,7D,7D,FA), \
V(15,FA,FA,EF), V(EB,59,59,B2), V(C9,47,47,8E), V(0B,F0,F0,FB), \
V(EC,AD,AD,41), V(67,D4,D4,B3), V(FD,A2,A2,5F), V(EA,AF,AF,45), \
V(BF,9C,9C,23), V(F7,A4,A4,53), V(96,72,72,E4), V(5B,C0,C0,9B), \
V(C2,B7,B7,75), V(1C,FD,FD,E1), V(AE,93,93,3D), V(6A,26,26,4C), \
V(5A,36,36,6C), V(41,3F,3F,7E), V(02,F7,F7,F5), V(4F,CC,CC,83), \
V(5C,34,34,68), V(F4,A5,A5,51), V(34,E5,E5,D1), V(08,F1,F1,F9), \
V(93,71,71,E2), V(73,D8,D8,AB), V(53,31,31,62), V(3F,15,15,2A), \
V(0C,04,04,08), V(52,C7,C7,95), V(65,23,23,46), V(5E,C3,C3,9D), \
V(28,18,18,30), V(A1,96,96,37), V(0F,05,05,0A), V(B5,9A,9A,2F), \
V(09,07,07,0E), V(36,12,12,24), V(9B,80,80,1B), V(3D,E2,E2,DF), \
V(26,EB,EB,CD), V(69,27,27,4E), V(CD,B2,B2,7F), V(9F,75,75,EA), \
V(1B,09,09,12), V(9E,83,83,1D), V(74,2C,2C,58), V(2E,1A,1A,34), \
V(2D,1B,1B,36), V(B2,6E,6E,DC), V(EE,5A,5A,B4), V(FB,A0,A0,5B), \
V(F6,52,52,A4), V(4D,3B,3B,76), V(61,D6,D6,B7), V(CE,B3,B3,7D), \
V(7B,29,29,52), V(3E,E3,E3,DD), V(71,2F,2F,5E), V(97,84,84,13), \
V(F5,53,53,A6), V(68,D1,D1,B9), V(00,00,00,00), V(2C,ED,ED,C1), \
V(60,20,20,40), V(1F,FC,FC,E3), V(C8,B1,B1,79), V(ED,5B,5B,B6), \
V(BE,6A,6A,D4), V(46,CB,CB,8D), V(D9,BE,BE,67), V(4B,39,39,72), \
V(DE,4A,4A,94), V(D4,4C,4C,98), V(E8,58,58,B0), V(4A,CF,CF,85), \
V(6B,D0,D0,BB), V(2A,EF,EF,C5), V(E5,AA,AA,4F), V(16,FB,FB,ED), \
V(C5,43,43,86), V(D7,4D,4D,9A), V(55,33,33,66), V(94,85,85,11), \
V(CF,45,45,8A), V(10,F9,F9,E9), V(06,02,02,04), V(81,7F,7F,FE), \
V(F0,50,50,A0), V(44,3C,3C,78), V(BA,9F,9F,25), V(E3,A8,A8,4B), \
V(F3,51,51,A2), V(FE,A3,A3,5D), V(C0,40,40,80), V(8A,8F,8F,05), \
V(AD,92,92,3F), V(BC,9D,9D,21), V(48,38,38,70), V(04,F5,F5,F1), \
V(DF,BC,BC,63), V(C1,B6,B6,77), V(75,DA,DA,AF), V(63,21,21,42), \
V(30,10,10,20), V(1A,FF,FF,E5), V(0E,F3,F3,FD), V(6D,D2,D2,BF), \
V(4C,CD,CD,81), V(14,0C,0C,18), V(35,13,13,26), V(2F,EC,EC,C3), \
V(E1,5F,5F,BE), V(A2,97,97,35), V(CC,44,44,88), V(39,17,17,2E), \
V(57,C4,C4,93), V(F2,A7,A7,55), V(82,7E,7E,FC), V(47,3D,3D,7A), \
V(AC,64,64,C8), V(E7,5D,5D,BA), V(2B,19,19,32), V(95,73,73,E6), \
V(A0,60,60,C0), V(98,81,81,19), V(D1,4F,4F,9E), V(7F,DC,DC,A3), \
V(66,22,22,44), V(7E,2A,2A,54), V(AB,90,90,3B), V(83,88,88,0B), \
V(CA,46,46,8C), V(29,EE,EE,C7), V(D3,B8,B8,6B), V(3C,14,14,28), \
V(79,DE,DE,A7), V(E2,5E,5E,BC), V(1D,0B,0B,16), V(76,DB,DB,AD), \
V(3B,E0,E0,DB), V(56,32,32,64), V(4E,3A,3A,74), V(1E,0A,0A,14), \
V(DB,49,49,92), V(0A,06,06,0C), V(6C,24,24,48), V(E4,5C,5C,B8), \
V(5D,C2,C2,9F), V(6E,D3,D3,BD), V(EF,AC,AC,43), V(A6,62,62,C4), \
V(A8,91,91,39), V(A4,95,95,31), V(37,E4,E4,D3), V(8B,79,79,F2), \
V(32,E7,E7,D5), V(43,C8,C8,8B), V(59,37,37,6E), V(B7,6D,6D,DA), \
V(8C,8D,8D,01), V(64,D5,D5,B1), V(D2,4E,4E,9C), V(E0,A9,A9,49), \
V(B4,6C,6C,D8), V(FA,56,56,AC), V(07,F4,F4,F3), V(25,EA,EA,CF), \
V(AF,65,65,CA), V(8E,7A,7A,F4), V(E9,AE,AE,47), V(18,08,08,10), \
V(D5,BA,BA,6F), V(88,78,78,F0), V(6F,25,25,4A), V(72,2E,2E,5C), \
V(24,1C,1C,38), V(F1,A6,A6,57), V(C7,B4,B4,73), V(51,C6,C6,97), \
V(23,E8,E8,CB), V(7C,DD,DD,A1), V(9C,74,74,E8), V(21,1F,1F,3E), \
V(DD,4B,4B,96), V(DC,BD,BD,61), V(86,8B,8B,0D), V(85,8A,8A,0F), \
V(90,70,70,E0), V(42,3E,3E,7C), V(C4,B5,B5,71), V(AA,66,66,CC), \
V(D8,48,48,90), V(05,03,03,06), V(01,F6,F6,F7), V(12,0E,0E,1C), \
V(A3,61,61,C2), V(5F,35,35,6A), V(F9,57,57,AE), V(D0,B9,B9,69), \
V(91,86,86,17), V(58,C1,C1,99), V(27,1D,1D,3A), V(B9,9E,9E,27), \
V(38,E1,E1,D9), V(13,F8,F8,EB), V(B3,98,98,2B), V(33,11,11,22), \
V(BB,69,69,D2), V(70,D9,D9,A9), V(89,8E,8E,07), V(A7,94,94,33), \
V(B6,9B,9B,2D), V(22,1E,1E,3C), V(92,87,87,15), V(20,E9,E9,C9), \
V(49,CE,CE,87), V(FF,55,55,AA), V(78,28,28,50), V(7A,DF,DF,A5), \
V(8F,8C,8C,03), V(F8,A1,A1,59), V(80,89,89,09), V(17,0D,0D,1A), \
V(DA,BF,BF,65), V(31,E6,E6,D7), V(C6,42,42,84), V(B8,68,68,D0), \
V(C3,41,41,82), V(B0,99,99,29), V(77,2D,2D,5A), V(11,0F,0F,1E), \
V(CB,B0,B0,7B), V(FC,54,54,A8), V(D6,BB,BB,6D), V(3A,16,16,2C)
#define V(a,b,c,d) 0x##a##b##c##d
static const uint32_t FT0[256] = { FT };
#undef V
#if !defined(MBEDTLS_AES_FEWER_TABLES)
#define V(a,b,c,d) 0x##b##c##d##a
static const uint32_t FT1[256] = { FT };
#undef V
#define V(a,b,c,d) 0x##c##d##a##b
static const uint32_t FT2[256] = { FT };
#undef V
#define V(a,b,c,d) 0x##d##a##b##c
static const uint32_t FT3[256] = { FT };
#undef V
Какая генерация )))
Крестобляди б наверное тут какими-то констэкспрами делали нужные кобенации битиков. А тут прость через перегрузку переопределение дефайна можно по-разному байтики сшивать.
0
function main()
{
assert(false, "defl0");
}
// получаетм MLIR tsc.exe --emit=mlir C:\temp\2.ts
module {
func @main() {
%false = constant false
typescript.assert %false, "defl0"
return
}
}
// или MLIR-LLVM
module {
llvm.mlir.global internal constant @f_7029868395233414505("C:\\temp\\2.ts\00")
llvm.mlir.global internal constant @m_964876063036005986("defl0\00")
llvm.func @_assert(!llvm.ptr<i8>, !llvm.ptr<i8>, i32)
llvm.func @main() {
%0 = llvm.mlir.constant(false) : i1
llvm.cond_br %0, ^bb1, ^bb2
^bb1: // pred: ^bb0
llvm.return
^bb2: // pred: ^bb0
%1 = llvm.mlir.addressof @m_964876063036005986 : !llvm.ptr<array<6 x i8>>
%2 = llvm.mlir.constant(0 : index) : i64
%3 = llvm.getelementptr %1[%2, %2] : (!llvm.ptr<array<6 x i8>>, i64, i64) -> !llvm.ptr<i8>
%4 = llvm.mlir.addressof @f_7029868395233414505 : !llvm.ptr<array<13 x i8>>
%5 = llvm.mlir.constant(0 : index) : i64
%6 = llvm.getelementptr %4[%5, %5] : (!llvm.ptr<array<13 x i8>>, i64, i64) -> !llvm.ptr<i8>
%7 = llvm.mlir.constant(5 : i32) : i32
llvm.call @_assert(%3, %6, %7) : (!llvm.ptr<i8>, !llvm.ptr<i8>, i32) -> ()
llvm.unreachable
}
}
// переводим в LLVM mlir-translate.exe --mlir-to-llvmir -o=out.il 1.mlir и получаем полный абзец
; ModuleID = 'LLVMDialectModule'
source_filename = "LLVMDialectModule"
@m_15759024501200700639 = internal constant [6 x i8] c"defl2\00"
@f_7029868395233414505 = internal constant [13 x i8] c"C:\\temp\\2.ts\00"
@m_9918845950589312633 = internal constant [6 x i8] c"defl0\00"
declare i8* @malloc(i64)
declare void @free(i8*)
declare void @_assert(i8*, i8*, i32)
define void @main() !dbg !3 {
br i1 false, label %1, label %3, !dbg !7
1: ; preds = %0
br i1 false, label %2, label %4, !dbg !9
2: ; preds = %1
ret void, !dbg !10
3: ; preds = %0
call void @_assert(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @m_9918845950589312633, i64 0, i64 0), i8* getelementptr inbounds ([13 x i8], [13 x i8]* @f_7029868395233414505, i64 0, i64 0), i32 5), !dbg !11
unreachable, !dbg !12
4: ; preds = %1
call void @_assert(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @m_15759024501200700639, i64 0, i64 0), i8* getelementptr inbounds ([13 x i8], [13 x i8]* @f_7029868395233414505, i64 0, i64 0), i32 12), !dbg !13
unreachable, !dbg !14
}
// компилим это говно и получаем EXE
// llc.exe --filetype=obj -o=out.o out.il
// lld.exe -flavor link out.o "libcmt.lib" "libvcruntime.lib" "kernel32.lib" "libucrt.lib" "uuid.lib"
// запускаем и вуаля
// Output:
// Assertion failed: defl0, file C:\temp\2.ts, line 5
продолжаем говнокодить. что получается из одной строчки после компиляции когда в TypeScript (компайлером)
ну все сказанно в говнокоде
0
char* to_str(int i) {
char* s = malloc(12);
sprintf(s, "%d", i);
return s;
}
Как в сишке без RAII принято жить? Пиздец какой-то. Буфер в функцию передавать?
Что мешает завезти RAII в сишку?
−1
includelib C:\Irvine\User32.Lib
includelib C:\Irvine\Kernel32.Lib
includelib D:\masm32\lib\Irvine32.lib
include \masm32\include\Irvine32.inc
.data
data_1 dword 45
data_2 dword 29
msg byte ?
.code
main PROC
xor ebx, ebx
xor eax, eax
xor edx, edx
xor esi, esi
mov cl ,31
mov eax, data_1
mov esi , data_2
lm:
shl esi, 1
jnc one
cmp msg, 1
je two
shl eax, cl
mov msg, 1
mov ebx, data_1
jmp one
two:
shl ebx, cl
mov msg, 0
add eax, ebx
add edx , eax
mov eax, data_1
one:
loop lm
mov eax , edx
call WriteInt
Call CrLf
exit
main ENDP
END main
Hey, Mr. Tambourine Man, play a song for me
I'm not sleepy and there is no place I'm going to
Hey, Mr. Tambourine Man, play a song for me
In the jingle jangle morning I'll come following you
Though I know that evening's empire has returned into sand
Vanished from my hand
Left me blindly here to stand, but still not sleeping
My weariness amazes me, I'm branded on my feet
I have no one to meet
And the ancient empty street's too dead for dreaming
Hey, Mr. Tambourine Man, play a song for me
I'm not sleepy and there is no place I'm going to
Hey, Mr. Tambourine Man, play a song for me
In the jingle jangle morning I'll come following you
Take me on a trip upon your magic swirling ship
My senses have been stripped
My hands can't feel to grip
My toes too numb to step
Wait only for my boot heels to be wandering
I'm ready to go anywhere, I'm ready for to fade
Into my own parade
Cast your dancing spell my way, I promise to go under it
Hey, Mr. Tambourine Man, play a song for me
I'm not sleepy and there is no place I'm going to
Hey, Mr. Tambourine Man, play a song for me
In the jingle jangle morning I'll come following you
−3
int hlp_fix(char data[] , char dump_alpha[] ){
int run = 0;
char prev = '0';
int count_bracket = 0 ;
puts(dump_alpha);
if(my_isdigit(data[0]) || my_isalpha(data[0]) ){
prev = data[0];
}
else if (data[0] == '('){
count_bracket++;
prev = data[0];
}
else{
puts("!!! first error !!!");
exit(1);
}
for(run = 1;data[run] != '\0' ;run++){
if ( data[run + 1] == '\0' && isOperator(prev ) ){
puts("!!! error isOperator !!!");
exit(1);
}
if(isgraph(data[run] )){
if( secure_1(data[run], dump_alpha ) ) {
printf("!!! error this no list = %c !!!", data[run] );
exit(1);
}
if(prev == '.' ){
if( data[run - 1 ] == '.' && my_isdigit(data[run]) ) {
prev = data[run];
}
else{
puts(" !!! error point !!!");
exit(1);
}
}
else if(my_isdigit(prev) ){
if( data[run] == ')' ) {
prev = data[run];
--count_bracket;
}
else if( ( my_isdigit(data[ run - 1 ]) || data[run - 1 ] == '.' ||
isOperator(data[run]) ) ){
prev = data[run];
}
else{
puts("error isdigit");
exit(1);
}
}
else if(isOperator(prev)){
if( (my_isdigit(data[run]) || my_isalpha(data[run] ) ) ){
prev = data[run];
}
else if ( data[run] == '(' ){
prev = data[run];
count_bracket++;
}
else{
puts("error isOperator");
exit(1);
}
}
else if(prev == '(' ){
if( (my_isdigit(data[run] ) || my_isalpha(data[run] ) ) ){
prev = data[run];
}
else if ( data[run] == '('){
count_bracket++;
prev = data[run];
}
else{
Ни что так не вдохновляет на бейсджампинг без парашюта как "отлов ошибок" который не работает ))))
https://ideone.com/rjrwMQ