2016-01-19 1 views
0

Для каждого процессора (Cortex M, Cortex 5) компилятор должен знать, какой размер данных связан с , integer, short, .... ...Как компилятор устанавливает связь между базовым типом ANSI C и выбранным процессором

Пожалуйста, не могли бы вы помочь мне понять, как этот выбор сделан?

+2

В компиляторе есть исходный файл с таблицей, грубо говоря. – bmargulies

+0

Вы в основном говорите компилятору, указав, какую архитектуру вы хотите скомпилировать. Это указывает на файлы заголовков и такие, которые определяют эти вещи. – Thilo

+0

Некоторые люди сообщают компилятору свой выбор, автору компилятора или человеку, который портировал компилятор на эту архитектуру. и т. д. Очень специфический для компилятора специфический нестандартный и может меняться в любое время с любой новой версией компилятора, а некоторые компиляторы могут даже иметь параметры командной строки для изменения этих определений. –

ответ

0

Пожалуйста, не могли бы вы помочь мне понять, как этот выбор сделан?

Угадай компилятор, мы говорим, это C один.

Сначала у нас есть спецификация для языка C, см. Статью wiki C data types. Но тогда C spec дает некоторую гибкость для реализации ...

int является словом архитектуры. Слово представляет собой почти атомный размер обработки архитектуры. Для устаревшего ARM это 32-разрядный, считайте, что архитектура имеет 32-разрядные регистры.

char кратчайший бит. В настоящее время вы не можете получить меньше 8, и почти все архитектуры позволяют вам играть с 8. 8 хорошо, потому что он соответствует ASCII, поэтому вы получаете эффективную поддержку от архитектуры для воспроизведения строк ASCII.

short помогает, когда ваша архитектура может выполнять операции с 16-битными значениями, а long подходит для 64-разрядных.

signed/unsigned на самом деле не имеет отношения к этому, так как в случае, когда некоторая битовая строка используется как подписанная, она уменьшается в верхнем пределе того, что она может представлять.