I’m looking through the “Processor Modeling Guide” provided by a company named OVP (a product similar to qemu). In it, there’s a little code snippet resembling the following:
static or1kDispatchTableC dispatchTable = {
// handle arithmetic instructions
[OR1K_IT_ADDI] = disDefault,
[OR1K_IT_ADDIC] = disDefault,
[OR1K_IT_ANDI] = disDefault,
[OR1K_IT_ORI] = disDefault,
[OR1K_IT_XORI] = disDefault,
[OR1K_IT_MULI] = disDefault
};
I’ve never seen syntax like this before. irrelevant stuff about C++ removed
At the moment I don’t have the ability to download/look at their stuff to look at how anything is defined, hence my question. If you recognize this syntax, can you weigh in?
edit
or1kDispatchTableC is a typedef for a pointer of type or1kDispatchTableCP, but I still don’t have anything on what or1kDispatchTableCP is.
Well, assuming your first line is a typo, or
or1kDispatchTableCis an array type, so that this is actually an array declaration, this looks like a C11 explicitly initialized array. The lineinitializes element
OR1K_IT_ADDItodisDefault. Both of those need to be constant expressions —OR1K_IT_ADDIis probably a #define or an enum tag.I’m pretty sure that C++11 does NOT support this syntax, though some compilers (that also support C11) might support it as an extension.
From the names, I would guess that this is actually an array of function pointers.