филологи могут дальше не читать...
У меня возник вопрос.
Среда:
DOS(реальный или виртуальный)
BC++ v3.1.
Зову: farmalloc()
Он возвращает 4 байта, которые следует интерпретировать как двухбайтовый сегмент и двухбайтовое смещение. Т.е. тип (void far*).
Посмотрел как это компилируется. И возник у меня вопрос: что если смещение 0xFFFF или близко к тому? Нужно ли об этом заботиться или всегда можно положиться на вменяемость farmalloc()?
Как он компилирует - повесться можно...
Например:
2559:2673 EB06 JMP 267B
2559:2675 FF4EF2 DEC WORD PTR [BP-0E]
2559:2678 FF4EFC DEC WORD PTR [BP-04]
2559:267B 8E46F6 MOV ES,[BP-0A]
2559:267E 8B5EF2 MOV BX,[BP-0E]
2559:2681 26 ES:
2559:2682 8A07 MOV AL,[BX]
2559:2684 B400 MOV AH,00
2559:2686 0BC0 OR AX,AX
2559:2688 74EB JZ 2675