Спецификации языка C (или C ++) определяют исходный язык. Они не заботятся о процессоре, на котором он работает (программа на C может даже интерпретироваться человеком-рабом, но это будет неэтично и не будет экономически эффективным).
ABI по определению что-то о целевой системе. Это связано с процессором и системой (и существующими библиотеками, следующими за ABI).
В прошлом случалось, что некоторые процессоры имели проприетарную (то есть нераскрытую) спецификацию (даже их набор машинных инструкций не был общедоступным), и у них был непубличный ABI, за которым следовал компилятор (с уважением более или менее) языковой стандарт).
Для определения языка программирования не требуются те же наборы навыков, что и для определения ABI.
Вы могли бы даже определить более новый ABI для существующего процессора, но это требует большой работы (исправление компилятора, перекомпиляция всего, включая стандартные библиотеки C & C ++ и все необходимые утилиты и библиотеки), так что как правило, бесполезно.