-
Лучший говнокод
- В номинации:
-
- За время:
-
-
+136
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
eax = esp;
if (gB(eax + 0x19) == 0) {
uint edx = gD(eax + 8);
if (gB(edx + 0x19) == 0) {
eax = gD(edx);
if (gB(eax + 0x19) == 0) {
do {
edx = eax;
eax = gD(edx);
}
while (gB(eax + 0x19) == 0);
}
esp = edx;
//ret
}
else {
eax = gD(eax + 4);
if (gB(eax + 0x19) == 0) {
do {
edx = esp;
if (edx != gD(eax + 8)) break;
esp = eax;
eax = gD(eax + 4);
}
while (gB(eax + 0x19) == 0);
}
esp = eax;
}
}
eax = esp;
X: я занялся написанием научной фантастики)
Y: АИ? ИИ?
X: /*код!!!111*/
Y: декомпилятор пишешь?
X: декомпилятор это не фантастика
это реальность
Y: А что пишешь?
X: а это я сам не знаю что это)
вообщем, в игре на земле валяются предметы
нужно найти как они расположены в памяти
Y: Это результат декомпиляции или что это?
X: обычно это либо eax, [eax + idi * 4]
или что то в этом духе
просто постраничное считывание
типа eax, [eax]
eax, [eax]
eax, [eax]
а тут ни то ни другое)
сама игра ищет предметы по какой то безумной логике
Y: Это ты написал программы и обозвал так свои переменные?
X: да)
вообщем
мне стало лень разбираться
что и как делает игрушка
и я просто скопировал код
из дизасма
в С№
и перебил под синтаксис)
на удивление четко работает)
Говногость,
27 Сентября 2011
-
+964
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
using System;
using System.Reflection;
using System.Reflection.Emit;
namespace DynUnloop
{ // Суммирование в цикле
class SumLooping
{ public int Summ(int valMax)
{ int result = 0;
for (int i = 0; i <= valMax; i++)
result += i;
return result;
}
}
// Плоское суммирование
class SumFlat
{ interface ISumCode
{ int ComputeSumm(int valMax);
}
void WriteCode(int valMax)
{ AssemblyName assemblyName = new AssemblyName();
assemblyName.Name = "SumFlatAssembly";
AssemblyBuilder assemblyBuilder =
AppDomain.CurrentDomain.DefineDynamicAssembly(
assemblyName, AssemblyBuilderAccess.Run);
ModuleBuilder moduleBuilder =
assemblyBuilder.DefineDynamicModule("SumFlatModule");
TypeBuilder typeBuilder =
moduleBuilder.DefineType("SumFlatClass"
, TypeAttributes.Public);
typeBuilder.AddInterfaceImplementation(typeof(ISumCode));
/// Задаём возвращаемое зачение и параметр
Type[] paramTypes = { typeof(int) };
Type returnType = typeof(int);
MethodBuilder methodBuilder =
typeBuilder.DefineMethod("ComputeSumm"
, MethodAttributes.Public
| MethodAttributes.Virtual
, returnType, paramTypes);
ILGenerator il = methodBuilder.GetILGenerator();
// Генерируем плоский код.
il.Emit(OpCodes.Ldc_I4, 0);
for (int i = 1; i <= valMax; i++)
{ il.Emit(OpCodes.Ldc_I4, i);
il.Emit(OpCodes.Add);
}
il.Emit(OpCodes.Ret);
// Перекрываем метод ComputeSumm и создаём тип SumFlatClass.
MethodInfo methodInfo =
typeof(ISumCode).GetMethod("ComputeSumm");
typeBuilder.DefineMethodOverride(methodBuilder, methodInfo);
typeBuilder.CreateType();
/// Код готов, создаём объект и берем его интерфейс.
code = (ISumCode)assemblyBuilder.CreateInstance("SumFlatClass");
}
public int Summ(int val)
{ if (this.code == null)
WriteCode(val);
return this.code.ComputeSumm(val);
}
ISumCode code;
}
Оригинальный стиль кода и комментарии сохранёны. (с), или как там.
В коде - разворачивание цикла в "плоский" IL код, который, как доказывается должен выигрывать по производительности.
Elvenfighter,
13 Сентября 2011
-
+85
- 1
String methodName = (new Exception()).getStackTrace()[1].getMethodName();
Вот как надо получать имя метода. Это вам не __func__ ...
roman-kashitsyn,
14 Июня 2011
-
−118
- 1
- 2
xxx: Знакомый попал в дтп, спорная ситуация, отдал гайцам флешку из регистратора, опечатали в конверт.
xxx: Гайцы внимательно изучили - признали невиновность по ДТП, и за одно наштрафовали на много тысяч по 4 случаям записанным на флешке и в конце концов лишили прав за встречку, записанную в начале дня.
fuckyounoob,
21 Апреля 2011
-
+107
- 1
- 2
- 3
- 4
- 5
procedure proc(a, b: integer);
begin
end;
proc(1, 2,); // лишняя запятая после 2 !!!!11
на Delphi7 компилится и работает!!! Я в шокенах, 8 лет на Делфи и не знал...
StriderMan,
14 Февраля 2011
-
+154
- 1
- 2
- 3
- 4
- 5
- 6
$src = fopen("0.txt", 'r');
while(!feof($src))
{
$line[] = fgets($src);
$line++;
}
Интересно чему в конце будет равно $line? :)
Xander_Bass,
17 Декабря 2010
-
+145
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
/*----------------------------------------------------------------------------*/
double XzMinSec( double XBOCT, unsigned int OKP){ /*Gr(Ch).dG(dC)->Gr(Ch)MS.dS*/
signed int min, xz = XBOCT; XBOCT-=xz; min=60*XBOCT; XBOCT=(XBOCT*60-min)*60;
if (XBOCT>=59.5) { unsigned char teg[32]; double n = pow(10,OKP) * (XBOCT-min);
signed int z=n;n-=z; if(n>=0.5||n<=-0.5){ signed int x,y=0; sprintf(teg,"%d",z);
while(teg[y]!='\0') y++; z=1; for( x=0; x<OKP; x++ ) if ( teg[--y]!='9' ) z=0;
if(z==1) if(abs(min)==59) if(min<0) XBOCT=-4100; else XBOCT=4100; else if(min<0)
XBOCT=-100; else XBOCT=100; }} return xz * 10000 + min * 100 + XBOCT; }
/*----------------------------------------------------------------------------*/
гм... работает...
BeardRED,
22 Ноября 2010
-
+144
- 1
- 2
- 3
- 4
- 5
switch ($mode) {
default:
<не интересный код пропущен>
break;
}
Догайтесь с какого это проекта?
Я бы не запостил, если бы не увидел на хабре сообщение от некоторого striker_vlad:
"буду рад, если найдете там что-то, что можно будет напостить на сам сайт ;)"
Oleg_quadro,
13 Ноября 2010
-
−132
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
#!/bin/sh
# ...
# translate args from unix path to windows, if possible (eterbug #4933)
args_to_winpath()
{
for i in "$@" ; do
local TP="$i"
local TR=${i/\~/$HOME}
if [ -r "$TR" ] ; then
WP=$(winepath -w "$TR" 2>/dev/null)
[ -z "$WP" ] || TP="$WP"
fi
echo "$TP"
done
}
# ...
run_wine $(args_to_winpath "$@")
Это WINE@Etersoft. Люди пытались преобразовать системные пути в командной строке во внутренние вайновские. В результате из C:\Program Files больше ничего не запускается.
raorn,
30 Июня 2010
-
+169
- 1
- 2
- 3
- 4
//reversed for sorting
inline bool operator< (const Weight & other) const {
return (GetValue() > other.GetValue());
};
ton4eg,
25 Июня 2010