-
- Только причём здесь возвращение результата? В линуксе и в винде вызываются функции ядра, например open(). Вот они и возвращают результат. А внутри функции аргументы раскладываются в нужные регистры, вызывается прерывание, регистры раскладываются fk0(313 знак., 24.12.2013 14:44 - 14:52)
- INT31. Эк досом по мозгам ударило-то. До сих пор остатки DPMI и его QEMM в памяти. Помнится в компе SIMM битый стоял. Написал программку выделяющую битый кусок через XMS. И винда (98) после загрузки этот кусок не трогала. - fk0(24.12.2013 15:02)
- вот это - раскладывание по регистам и дёргание INT31 - и есть передача и возврат аргументов в/из прерывание(я). - =AlexD=(24.12.2013 14:47)
- Ну так я о том, что нужно написать тогда функцию обёртку на каждый случай. А не пытаться непонятно как сразу вызвать SWI и потом из обработчика SWI пытаться вернуть результат. И в обёртке ограничиться передачей только в регистрах (включая fk0(188 знак., 24.12.2013 14:57)
- В IAR есть спецуевые прагмы и слово __swi - LightElf(24.12.2013 15:06)
- Вывод: GCC говно и паделка студентов, будущее за IAR. - fk0(24.12.2013 15:12)
- В IAR есть спецуевые прагмы и слово __swi - LightElf(24.12.2013 15:06)
- Ну так я о том, что нужно написать тогда функцию обёртку на каждый случай. А не пытаться непонятно как сразу вызвать SWI и потом из обработчика SWI пытаться вернуть результат. И в обёртке ограничиться передачей только в регистрах (включая fk0(188 знак., 24.12.2013 14:57)
- Только причём здесь возвращение результата? В линуксе и в винде вызываются функции ядра, например open(). Вот они и возвращают результат. А внутри функции аргументы раскладываются в нужные регистры, вызывается прерывание, регистры раскладываются fk0(313 знак., 24.12.2013 14:44 - 14:52)