Мне было интересно, что компьютеры хранят всю информацию в виде 1s и 0s/low и high voltage, yada yada ... но тогда, когда мы скомпилируем программу, она - или просто любые данные, хранящиеся на comp, - это бинарная форма ... тогда как компьютер различает 2 части данных, поскольку все, что он состоит, представляет собой поток 0s и 1s ... Чтобы сделать мой вопрос более понятным, давайте возьмем смехотворно простой код от C:Как компьютеры различают 2 части данных?
void main() {
int A = 0;
int* pA = &A;
char c = 'c';
char* pC = &c;
return;
}
он ничего не делает - просто делает 4 переменных типов int, указатель на Int, char и указатель на Char ... Теперь они будут храниться где-то в форме 0s и 1s ... Итак, как знает ли компьютер, с какого бита запускается такая и такая переменная, и где она заканчивается? Для начала вы можете сказать, что компьютер имеет адрес, хорошо, предоставлен. Но как насчет конца? ... А как насчет сложных типов данных, таких как objects/structs?
И последнее, но не в последнюю очередь, как насчет функций/процедур?
Спасибо за этот небольшой подробный ответ ... но я боюсь, кажется, что ваша ссылка на «Art of Assembly», похоже, не работает ... в любом случае, еще раз спасибо! –
@ParthThakkar Извините, я исправил его. Похоже, сервер упал, работал, когда я его разместил. – byrondrossos