- 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
char *r_or_mem() {
if ( get_mod() == 3 )
return regs [ ( size << 3 ) | ( look & 7 ) ] ;
else {
static char buf [ 32 ] ;
char *s = buf ;
*s++ = '[' ;
if ( ! ( look & 4 ) ) {
*s++ = 'B' ;
*s++ = ( look & 2 ) ? 'P' : 'X' ;
*s++ = '+' ;
*s++ = ( look & 1 ) ? 'D' : 'S' ;
*s++ = 'I' ;
if ( mod ) *s++ = '+' ;
} else {
if ( ( look & 7 ) == 6 && ! mod ) mod = 2 ;
else {
if ( look & 2 ) {
*s++ = 'B' ;
*s++ = ( look & 1 ) ? 'X' : 'P' ;
} else {
*s++ = ( look & 1 ) ? 'D' : 'S' ;
*s++ = 'I' ;
}
if ( mod ) *s++ = '+' ;
}
}
if ( mod ) {
read_value ( s , mod == 2 ) ;
s = s + strlen ( s ) ;
}
*s++ = ']' ;
*s = 0 ;
return buf ;
}
}
void checkorder() {
if ( ! dest ) {
char *tmp = op1 ;
op1 = op2 ;
op2 = tmp ;
}
}
void rm ( char *s ) {
sprintf ( decoded , "%s\t" , s ) ;
decoded += strlen ( decoded ) ;
get_ds() ;
read() ;
op1 = get_reg() ;
op2 = r_or_mem() ;
checkorder() ;
sprintf ( decoded , "%s , %s" , op1 , op2 ) ;
}
Чассть моего дизассемблера для 16-анального x86, что читает операндыы.
yet_another_one_shit 19.04.2018 17:38 # 0
Steve_Brown 19.04.2018 18:01 # +2
yet_another_one_shit 19.04.2018 18:06 # 0
bormand 19.04.2018 18:07 # +2
yet_another_one_shit 19.04.2018 18:13 # 0
yet_another_one_shit 19.04.2018 19:54 # +1
А то у меня много такого кода, типа:
А хотелось бы:
bormand 19.04.2018 20:01 # +4
yet_another_one_shit 19.04.2018 20:28 # 0
yet_another_one_shit 19.04.2018 21:33 # +1
yet_another_one_shit 19.04.2018 23:00 # 0
412 строк превратились в 293.
bormand 19.04.2018 20:09 # +1
bormand 19.04.2018 20:12 # 0
yet_another_one_shit 19.04.2018 20:12 # 0
bormand 19.04.2018 20:13 # +1
yet_another_one_shit 19.04.2018 20:18 # +2
ЗЫ. Жалко что на биржах фриланса заказы в основном по вебу, низкоуровневости почти не встречается.
AnalDaddy 19.04.2018 20:20 # 0
3.14159265 19.04.2018 21:07 # −4
Crabbe 19.04.2018 21:10 # 0
hersgori 19.04.2018 21:14 # +2
yet_another_one_shit 19.04.2018 21:16 # +1
blackray 19.04.2018 21:24 # 0
3.14159265 20.04.2018 03:07 # −1
Но админ как всегда, не обратил внимания на эти визгливые просьбы...
AnalDaddy 20.04.2018 03:41 # −2
3.14159265 20.04.2018 15:35 # −2
Как и ответы вопросом на вопрос.
yet_another_one_shit 20.04.2018 16:09 # 0
И снова ты долбоёб — где ты видишь агрессию ?
Я Гоано, а не СемаРиал.
3.14159265 20.04.2018 16:21 # −1
Слуш, ты уж оперделись тогда.
Ты Гоано, СемаРиал, еще_одно_говно, или dolboeb?
http://govnokod.ru/24137#comment412042
yet_another_one_shit 20.04.2018 16:29 # 0
А насчет dolboeb'а:
И с чего ты взял, что я СемаРиал ?
И кто такой Слуш ?
3.14159265 20.04.2018 16:38 # −1
Тот тоже активно сралписал про всякую сишечку и лоу-левел, затем замолчал, и сразу ты появился.
yet_another_one_shit 20.04.2018 16:41 # 0
3.14159265 20.04.2018 16:45 # −1
yet_another_one_shit 20.04.2018 16:50 # 0
yet_another_one_shit 20.04.2018 17:52 # 0
http://govnokod.ru/24124#comment411644
roskomgovno 27.04.2018 22:58 # 0
yet_another_one_shit 27.04.2018 23:10 # 0
roskomgovno 27.04.2018 23:13 # 0
yet_another_one_shit 27.04.2018 23:27 # 0
roskomgovno 27.04.2018 23:30 # 0
https://blood-wiki.org/index.php/Blood_Source_Campaign
j123123 28.04.2018 08:01 # 0
https://github.com/videogamepreservation/dukenukem3d
https://github.com/fabiensanglard/vanilla_duke3D/blob/master/SRC/A.ASM#L67
yet_another_one_shit 28.04.2018 11:22 # 0
roskomgovno 29.04.2018 01:27 # 0
почитай про dos extenders, dos4gw и пр.
syoma 29.04.2018 02:28 # 0
Короче, во времена дос были программы для реального режима проца - они могли занимать максимум 600 с чем-то кб оперативы. Кому этого не хватало, сам переводил проц в защищенный режим - так ему была доступна вся оператива. Так появились дос расширители. Недостаток появился, когда появилась win32 - они конкуррировали с осью - главный должен быть только один. Win9x их терпела, но если такие игры висли - гарантированно висла и винда. NT поэтому с ними никогда не дружила и теперь в Blood можно поиграть разве что в досбоксе.
А 16 бит это 64кбит. Даже в реальном режиме смещение было 32 бита.
syoma 29.04.2018 03:26 # 0
roskomgovno 29.04.2018 03:39 # 0
Однако значение в сегментном регистре обрезалось, в итоге удавалось адресовать до 20 бит (1мб). Минус область bios, память видеоадаптера итд, в итоге программам доставалось 640К.
Туда же загружались (по умолчанию) всякие TSR (резидентные) программы вроде драйвера мыши и русификатора, в итоге программам доставалось еще меньше.
Однако всякие гоблины, викинги и принцы персии работали на ура (вероятно они использовали оверлеи: загружали часть данных в память при необходимости)
syoma 29.04.2018 04:39 # 0
Вот ты похож на сёмуриал.
bormand 29.04.2018 13:25 # 0
Только через unreal mode — прыгаешь в защищённый режим и возвращаешься обратно оставив limit на 32 бита. Само собой, этот хак работал только на 32-битных процах.
roskomgovno 29.04.2018 19:28 # 0
У 286 дорожек стало 24 (до 16 мегабайт) , и только у 386 их стало 32 (причем был кастрированный SX который имел 24 дорожки).
Так что физически адресовать 32 бита стало можно только в 386, однако для доступа туда из реального режима нужен был или хак unreal mode, или появившиеся в конце 80х спецификации DPMI, VCPI и XMS (himem.sys), да и то: там можно было держать данные (собссно, драйвер их туда копировал) а исполнять там код было нельзя.
А до этого еще была борьба за целый сегмент (64К) HMA (см "gate A20"), в общем это всё треш, ад и кошмар.
Слава виртуальной памяти, MMU слава.
yet_another_one_shit 19.04.2018 23:08 # 0
yet_another_one_shit 19.04.2018 23:23 # 0
AnalDaddy 19.04.2018 23:26 # 0
bormand 19.04.2018 23:30 # +1
Почти как джаваскрипт.
yet_another_one_shit 19.04.2018 23:37 # +2
roskomgovno 27.04.2018 23:34 # 0
cdecl был не быстр, емнип: там все надо было пихать в стек, даже ты хочешь один байт передать.
Регистры не использовались
sam 25.04.2018 05:48 # 0
На самом деле, прикольная либа была.. весом менее 1Кб
yet_another_one_shit 29.04.2018 13:50 # 0
?
bormand 29.04.2018 13:51 # 0
yet_another_one_shit 29.04.2018 14:12 # 0
bormand 29.04.2018 14:17 # +1
yet_another_one_shit 29.04.2018 14:37 # 0
yet_another_one_shit 29.04.2018 15:03 # 0
1024-- 29.04.2018 15:26 # 0
Это в нормальном Си так можно?
Лямбда C++ выворачивается и превращается в "лямбда-взятие" элемента массива.
yet_another_one_shit 29.04.2018 15:45 # 0