5 ms·
> Any realistic alternative to C must understand interrupts, memory mapped registers etc.. In what way does C understand interrupts?
by pixpop 10y ago
> Any realistic alternative to C must understand interrupts, memory mapped registers etc..
In what way does C understand interrupts?
- kayamon 10y agoBorland C used to, and I believe OpenWatcom still does. Haven't seen any other one that did for a long time.
- pjmlp 10y agoMost C compilers do, but those are language extensions, not defined on the language's standard thus not portable across compilers.
- Turing_Machine 10y agoYep. If nothing else, just about all of them have the asm keyword. That's non-standard (but almost always present) in C compilers, and "conditional" in C++ (i.e. the keyword is in the standard, but the semantics are implementation-defined). And yeah, it's a given that it's going to be non-portable. Given asm, implementing a Turbo C-style int86() function seems pretty trivial. It might even be doable as a macro.
- pjmlp 10y agoI loved the asm way in PC compilers used to support inline asm. asm { mov ax, 0x0013 int 0x10 } Can't really like the way clang and gcc asm work, even it it means giving more info to the optimizer.
- groovy2shoes 10y agoNot to mention that you could just use C identifiers in the asm block willy-nilly: int foo(int c) { int r; asm { mov ax, 0x0b00 int 0x21 /* poll stdin for input */ mov ax, offset c /* get address of `c` */ call bar /* call other C function */ mov r, dx /* save the result in `r` */ } return r; } Or something like that — it's been a while. Those were the days! GCC's (and I'm assuming clang's is much the same) inline assembly is a joke in comparison. I remember, when I first encountered it, flipping back-and-forth through the GCC docs looking for how people actually do inline asm with GCC...