- 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
static
{
unionSize = Math.max(6, 6);
size = 2 + unionSize + 4;
}
// следующий участок
case 7:
{
int result = (int)((long)getValue(cmd.isByteMode(), mem, op1) & 0L);
if(cmd.isByteMode())
result &= 0xff;
setValue(cmd.isByteMode(), mem, op1, result);
flags = result != 0 ? result & VMFlags.VM_FS.getFlag() : VMFlags.VM_FZ.getFlag();
break;
}
case 49:
{
setValue(true, mem, op1, (int)((long)getValue(true, mem, op1) & 0L));
break;
}
case 50:
{
setValue(false, mem, op1, (int)((long)getValue(false, mem, op1) & 0L));
break;
}
//=========== еще участок ============
long dataSize = (long)ReadData(this) & 0L;
for(int i = 0; inAddr < codeSize && (long)i < dataSize; i++)
{
prg.getStaticData().addElement(new Byte(valueOf((byte)(fgetbits() >> 8))));
faddbits(8);
}
wvxvw 04.04.2012 18:43 # +1
Lure Of Chaos 06.04.2012 00:23 # 0
похоже, писал сишник до мозга костей, такие любят писать в низкоуровневом стиле... (к примеру, деление на два обязательно заменят сдвигом)
Doctoror 06.04.2012 11:49 # +1
Прикол тут вовсе не тут, как было отмечено, а в том о чем говорил wvxvw, например.
И если вы не заметили
Вообще не исполниться, так как dataSize всегда ноль (любое число & 0 будет 0), и следственно (long)i < dataSize тут будет false с самого начала.
wvxvw 06.04.2012 02:08 # +1
и
это одно и то же, или какой смысл был во всех этих конверациях?
Doctoror 06.04.2012 12:01 # 0
Кстати еще веселый момент,
На самом деле можно написать так:
TarasB 06.04.2012 11:08 # 0
{
unionSize = Math.max(6, 6);
size = 2 + unionSize + 4;
}
Ну это нормально, только заменить бы ещё 2,4,6 на sizeof нужных типов ну и какого хуя это делает в java-коде?
Doctoror 06.04.2012 12:05 # 0
Math.max(int1, in2) возвращает то, что больше
Тут то просто
должно быть. Кстати когда я так и сделал, оказалось, что переменная unionSize используеться только в инициализаторе, и на самом деле инициализатор получаеться таким
TarasB 06.04.2012 13:44 # 0
Аналогично с 2+unionsize+4 - тут видно, что это размер структуры из 3 полей, первое двубайтовое, второе - это тот union, третье - 4-байтовое.
Поэтому отмени свою "оптимизацию" и оставь всё так, как было, потому что это было неспроста.
wvxvw 06.04.2012 15:20 # 0
TarasB 06.04.2012 16:18 # 0
wvxvw 06.04.2012 16:53 # 0
TarasB 06.04.2012 16:56 # 0
wvxvw 06.04.2012 17:01 # 0
Тогда можно было бы позвонить в астральную канцелярию и домогаться смысла, но в предоставленном варианте, это просто какое-то недоразумение.
TarasB 06.04.2012 17:09 # 0
roman-kashitsyn 06.04.2012 17:11 # +1
везёт
TarasB 06.04.2012 17:14 # 0
wvxvw 06.04.2012 17:16 # −1
TarasB 06.04.2012 17:17 # +1
wvxvw 06.04.2012 17:28 # 0
level - Asian?
lucidfoxGovno 06.04.2012 17:33 # +1
guest8 09.04.2019 13:01 # −999