>>391
コード空間とデータ空間の区別だけなら用途(型情報)で判別できるから問題ないって話だよ?
int *dataPtrにキャスト無しで代入できるのはデータ空間のアドレスだけだし、
int *dataPtrをキャスト無しで参照する文はデータ空間へのアクセスだけだ。
int(funcptr*)(int)も同じ。void*にキャストした結果同じ値になる位で、特に問題はない。

アセンブラ触ってりゃデータとコードでは使う命令からして違うってわかるだろうし、
x86の16bitモードでセグメントレジスタだって命令によってデフォルトのセグメントレジスタ違うわけで。