MrDEE, интересно, для чего поднимаете форум? Мне казалось что они уже не в тренде Если не секрет. Можно в личку.
[Ответ]
CORE 13:14 08.04.2013
Нужна помощь в написании дипломной программы на с#, кто сможет помочь, пишите в лс. о цене договоримся.
[Ответ]
Motion Blur 20:26 27.04.2013
Что бы это значило ? Связь через 3 джи - Мегафон. Два года все было нормально. Но сегодня один сайт не открывается . Ни хромом, ни файерфоксом, ни эксплорером. Открылся webwarper-ом и anonymous-ом. Расскажите что сделать, чтоб было как раньше. Только доступно, мы люди темные...
[Ответ]
Spectator 20:36 27.04.2013
Сообщение от Motion Blur:
Что бы это значило ? Связь через 3 джи - Мегафон. Два года все было нормально. Но сегодня один сайт не открывается . Ни хромом, ни файерфоксом, ни эксплорером. Открылся webwarper-ом и anonymous-ом. Расскажите что сделать, чтоб было как раньше. Только доступно, мы люди темные...
Требуется в помощь для чайника, знающий человек по разработке air приложений в flash builder 4.6. Самое главное это знания компонента datagrid его свойств и работа с xml файлом как его открыть,сохранить перезаписать и т.д.Есть вопросы для знающего человека они очень просты.Цена договорная
[Ответ]
ds1 11:53 27.05.2013
Нужна помощь в написании программы, основная задача - получение некоторых координат точек трехмерной модели по xyz.
Spectator, во бред... ни по каким правилам и ни по каким идеям инт не ДОЛЖЕН равняться разряд ности процессора. ты так часто пишешь глупости что по правилам и идее ДОЛЖЕН после каждого слова писать ИМХО. Стандарт языка определяет минимальный диапазон значений каждого типа и ничего больше. А если у контроллера длинна байта равна 5 бит и машинное слово 2 байта то что?
[Ответ]
Spectator 12:43 10.06.2013
Сообщение от MadFish: Spectator, во бред... ни по каким правилам и ни по каким идеям инт не ДОЛЖЕН равняться разряд ности процессора. ты так часто пишешь глупости что по правилам и идее ДОЛЖЕН после каждого слова писать ИМХО. Стандарт языка определяет минимальный диапазон значений каждого типа и ничего больше. А если у контроллера длинна байта равна 5 бит и машинное слово 2 байта то что?
это НЕ ИМХО.
Я повторяюсь уже не первый раз, я говорю не о виртуальном стандарте виртуального языка, а о конкретно типе int языка C/C++. Именно на этот тип наложено вот такое заклятье, быть равным разрядности процессора. Именно в этом типе по случайному совпадению, видимо, хранятся ссылки. Которые ОБЯЗАНЫ храниться в области памяти равному разрядности процессора. Иначе они там не поместятся.
ситуации с идиотскими контроллерами разбирайте без меня, пожалуйста. хотя я лично ничего даже странного в байте длинной 5 бит не вижу абсолютно.
[Ответ]
MadFish 15:33 10.06.2013
Сообщение от Spectator:
это НЕ ИМХО.
Я повторяюсь уже не первый раз, я говорю не о виртуальном стандарте виртуального языка, а о конкретно типе int языка C/C++. Именно на этот тип наложено вот такое заклятье, быть равным разрядности процессора. Именно в этом типе по случайному совпадению, видимо, хранятся ссылки. Которые ОБЯЗАНЫ храниться в области памяти равному разрядности процессора. Иначе они там не поместятся.
Я тоби дурню, шо казав?(с) Гоблин "Братва и кольцо". Либо пиши ИМХО, либо не пиши глупости.
Во первых язык С\С++ не накладывает никаких ограничений на размеры типов данных, только на минимальный диапазон значений. ВСЕ!!! Все ограничения накладывает уже конкретный КОМПИЛЯТОР под конкретную ПЛАТФОРМУ, для конкретной ОПЕРАЦИОННОЙ СИСТЕМЫ. А компилятор ОБЯЗАН реализовывать этот, как ты назвал, "виртуальный стандарт виртуального языка". Так что нет никаких ограничений, кроме тех что заложены в стандарт языка, ты как програмист можешь заточить свой код под конкретный компилятор, и получить непереносимое, трудноотлаживаемое, глючное приложение, но тебя то никто не заставляет это делать насильно!!!!
Во вторых, да не обязан указатель быть адресом памяти вообще!!! Указатель может быть чем угодно, все зависит от компилятора. И при чем тут адрес памяти и какое он нафиг имеет отношение к разрядности процессора? Ты хоть одну спецификацию хоть какого-нибудь процессора читал?
Сообщение от Spectator:
хотя я лично ничего даже странного в байте длинной 5 бит не вижу абсолютно.
Ну хоть это радует. Короче языка С\С++ ты не знаешь, что такое разрядность процессора не понимаешь, архитектуру процессоров не знаешь. Садись- 2. На будущее- пиши везде ИМХО, тогда не так сильно будет раздражать твое незнание (незнание само по себе нормальная вещь, но вот выпячивать его как неприрекаемую истину, это раздражает)
[Ответ]
Spectator 16:24 10.06.2013
Сообщение от MadFish:
Я тоби дурню, шо казав?
за дурня в мой адрес или адрес другого форумца в следующий будет бан на две недели. я предупредил.
Сообщение от MadFish:
Во вторых, да не обязан указатель быть адресом памяти вообще!!!
он не обязан, он им является по определению. на этом флуд в теме закрываем. разговаривать мне с Вами явно не о чем.
[Ответ]
MadFish 16:30 10.06.2013
Сообщение от Spectator:
за дурня в мой адрес или адрес другого форумца в следующий будет бан на две недели. я предупредил.
он не обязан, он им является по определению. на этом флуд в теме закрываем. разговаривать мне с Вами явно не о чем.
это была цитата с указанием первоисточника, не более, то что ты воспринял ее на свой счет...
и на последок: указатель на область памяти совсем не обязан быть адресом ячейки памяти(обдумай) И таки да, разговарить нам с тобой не о чем.
[Ответ]
Spectator 18:49 10.06.2013
Сообщение от MadFish:
это была цитата с указанием первоисточника, не более, то что ты воспринял ее на свой счет...
за попытку принять меня за идиота срок наказания меньше не станет.
Сообщение от MadFish:
и на последок: указатель на область памяти совсем не обязан быть адресом ячейки памяти(обдумай) И таки да, разговарить нам с тобой не о чем.
обязан, поначитаетесь хлама по Java и пытаетесь пошатнуть основы, которые лежат ПОД виртуальной машиной.
это точно.
[Ответ]
MadFish 19:00 10.06.2013
Ну вот опять же глупость. Я на сях кодаю по профессии своей уже лет 15, а на явах ваших только балуюсь. И говорил я тебе русским языком ну почитай ты блин стандарт языка хотябы ISO/IEC 14882:2011 прежде чем глупости то писать.
Бан мне глубоко пофиг, не напрягайся, все равно на этом форуме лишь пара толковых людей, которых интересно почитать. Так что можешь банить.
Что ты такой неверующий то и не грамотный. Я запросто переопределю тебе на сях с крестами менеджер памяти и указателем станет текстовое описание вроде "третий ящик справа на север от дохлой утки" и это будет указывать на области в файле на флешке спутника шпиона северной кореи. И это будет правильно и законно с точки зрения ЯЗЫКА С\С++ а что компилятор понимает под указателем, вообще только Аллах знает.
[Ответ]
dn2k4 19:19 10.06.2013
Сообщение от Spectator:
а о конкретно типе int языка C/C++. Именно на этот тип наложено вот такое заклятье, быть равным разрядности процессора. Именно в этом типе по случайному совпадению, видимо, хранятся ссылки. Которые ОБЯЗАНЫ храниться в области памяти равному разрядности процессора. Иначе они там не поместятся. ситуации с идиотскими контроллерами разбирайте без меня, пожалуйста.
Сообщение от MadFish:
Ну вот опять же глупость. Я на сях кодаю по профессии своей уже лет 15, а на явах ваших только балуюсь. И говорил я тебе русским языком ну почитай ты блин стандарт языка хотябы ISO/IEC 14882:2011 прежде чем глупости то писать.
вот давай почитай и покажи место, в котором указатель (pointer) перестал быть ссылкой на область памяти.
где пытаются провести разницу между переменной и значением, которое она хранит, я, сразу говорю, участвовать даже не подумаю.
указатель - это адрес. хранится он в переменной. ссылочного типа либо int. все компиляторы, у которых при настройках по умолчанию sizeof(int)!=sizeof(int*) подлежат немедленной утилизации. прецеденты УЖЕ были.
[Ответ]
MadFish 19:26 10.06.2013
Ну е мае... Ну нет в стандарте языка определения что указатель на области памяти это последовательно стоящие 32 бита, ссылка на область памяти это абстракция которая реализуется компилятором по разному на разных платформах. Че ты к железу приколебался? Оно работает как умеет. Язык не зависит от платформы и реализации. Да приятель, блогодаря таким как ты хорошие программеры всегда будут цениться:-) и по поводу sizeof( int) != блаблабла любой 8 битный проц у него инт не равен сайз оф указатель на инт. и не равен разрядности проца. Начинаем дружно на свалку х86 z80 и прочие весёлые процы и контроллеры.
[Ответ]
Spectator 21:12 10.06.2013
Сообщение от MadFish:
блогодаря
это от слова "блог"?
Сообщение от MadFish:
таким как ты хорошие программеры всегда будут цениться:-)
безусловно.
Сообщение от MadFish:
и по поводу sizeof( int) != блаблабла любой 8 битный проц у него инт не равен сайз оф указатель на инт. и не равен разрядности проца. Начинаем дружно на свалку х86 z80 и прочие весёлые процы и контроллеры.
нет, мы сейчас дружно разберем модель памяти процессора z80, и выясним, сколько занимает указатель в нём. ты готов?
[Ответ]
MadFish 22:38 10.06.2013
Пишу с планшета, ещё вопросы по орфографии будут?
Я то готов а ты? Система z80 8Kb. Компилятор использует для данных индексную адресацию относительно ix. Итог инт 16 бит ссылка на инт 8 бит и че? Обратная ситуация твоя любимая видеокарточка и компилятор шейдеров glsl. Инт ты видишь как 32 бита а в железе он может быть как 64 бит, а указатель на него вообще не документирован. Разрядность видеокарты ну положим 24 пиксельных процессора * 4 *8=768 бит, а инт теже 32 бита- профит!!! Что очередной раз доказывает что нет в языке ограничений на размер типов данных, и то ,что нужно учить матчасть, а не писать ерунду.
[Ответ]
Anderson931 23:46 10.06.2013
Доброго времени суток. Ищу человека, который сможет написать многооконку (для отрытия одной программы множество раз). Сразу скажу, что стандартная песочница не работает (sandboxie).
Добавляемся в скайп Mr.Anderson931 всё обсудим там.
[Ответ]
aerin 00:04 11.06.2013
Вот вам не лень
Spectator, если лень читать стандарт посмотри хотя бы limits.h и stdint.h, там определяются размеры.
А в стандарте(5.3.3 Sizeof) кроме
Сообщение от :
... sizeof(char), sizeof(signed char) and sizeof(unsigned char) are 1. The result of sizeof applied to any other fundamental type (3.9.1) is implementation-defined.
и нет ничего. Реально 1 == sizeof( char ) <= sizeof( short ) <= sizeof( int )<= sizeof( long ), а там хоть 100500 байт на int [Ответ]
dn2k4 00:27 11.06.2013
Сообщение от Spectator:
нет, мы сейчас дружно разберем модель памяти процессора z80, и выясним, сколько занимает указатель в нём. ты готов?
Эх, ну зачем, зачем тебя туда понесло…
Код:
#define FARDATA 1
#include <stdlib.h>
void main(void) {
far int *p, *q;
p = malloc(sizeof(int));
q = p; // Чисто для иллюстрации
*p = 123;
free(p);
}
Собираем под твой z80
Код:
zcc +zx -a -c -cc test.c
Получаем:
Код:
._main
LINE 4
;far int *p, *q;
LINE 5
;p = malloc_far(sizeof(int));
LINE 7
push bc
push bc
push bc
ld hl,3 ;const
add hl,sp
push hl
ld hl,2 ;const
call l_int2long_s
push de
push hl
call malloc_far
pop bc
pop bc
pop bc
call l_putptr
;q = p;
LINE 8
ld hl,0 ;const
add hl,sp
push hl
ld hl,5 ;const
add hl,sp
call l_getptr
pop bc
call l_putptr
;*p = 123;
LINE 10
ld hl,3 ;const
add hl,sp
call l_getptr
push de
push hl
ld hl,123 ;const
exx
pop hl
pop de
exx
call lp_pint
;free_far(p);
LINE 12
ld hl,3 ;const
add hl,sp
call l_getptr
push de
push hl
call free_far
pop bc
pop bc
;}
pop bc
pop bc
pop bc
ret
…
; Z88 Small C+ Run Time Library
;
; Get Long Pointer from Near Memory
XLIB l_getptr
;Fetch long from (hl)
.l_getptr
ld e,(hl)
inc hl
ld d,(hl)
inc hl
ld l,(hl)
ld h,0
ex de,hl
ret
; Z88 Small C+ Run Time Library
; Long functions
;
XLIB l_putptr
.l_putptr
ld a,l
ld (bc),a
inc bc
ld a,h
ld (bc),a
inc bc
ld a,e
ld (bc),a
ret
; Internal routine to write int at far pointer
; 31/3/00 GWL
; Entry: E'H'L'=far pointer
; HL=word
;
; $Id: lp_pint.asm,v 1.2 2001/04/18 14:59:40 stefano Exp $
;
XLIB lp_pint
LIB farseg1,incfar
.lp_pint
ld a,($04d1)
ex af,af'
push hl
pop ix
exx
ld b,h
ld c,l
call farseg1
ld a,ixl
ld (hl),a
call incfar
ld a,ixh
ld (hl),a
ex af,af'
ld ($04d1),a
out ($d1),a
ret
Сообщение от MadFish:
Пишу с планшета, ещё вопросы по орфографии будут?
Я то готов а ты? Система z80 8Kb. Компилятор использует для данных индексную адресацию относительно ix. Итог инт 16 бит ссылка на инт 8 бит и че?
всё верно, именно это я и ждал. это НЕ ссылка 16 бит, это ссылка 8 бит в сегменте. 8 битная ссылка на 8 битный инт. я прекрасно знаю о существовании сегментов в Z80, но это не делает ссылки 16 битными, в том то и дело.
dn2k4, всё верно, спасибо за код.
меня туда не "понесло", процессор z80 мне прекрасно знаком, я провел в дизассемблере не один и не два года, и знаю о чем говорю.
[Ответ]
MadFish 11:50 11.06.2013
Сообщение от Spectator:
я прекрасно знаю о существовании сегментов в Z80, но это не делает ссылки 16 битными, в том то и дело.
Ну а я тебе о чем толкую?
ИТОГО: в С/С++
1 размер int не обязан быть равен разрядности процессора.
2 размер указателя int * не обязан быть равным размеру int
3 указатель(ссылка) не обязан быть адресом ячейки памяти
что и требовалось доказать.
[Ответ]
manifest 12:14 11.06.2013
Не ссорьтесь, господа, не тратьте зря время, читайте википедию
"In 32-bit programs, pointers and data types such as integers generally have the same length; this is not necessarily true on 64-bit machines.Mixing data types in programming languages such as C and its descendants such as C++ and Objective-C may thus function on 32-bit implementations but not on 64-bit implementations.
In many programming environments for C and C-derived languages on 64-bit machines, "int" variables are still 32 bits wide, but long integers and pointers are 64 bits wide. These are described as having an LP64 data model. Another alternative is the ILP64 data model in which all three data types are 64 bits wide, and even SILP64 where "short" integers are also 64 bits wide. However, in most cases the modifications required are relatively minor and straightforward, and many well-written programs can simply be recompiled for the new environment without changes. Another alternative is the LLP64 model, which maintains compatibility with 32-bit code by leaving both int and long as 32-bit. "LL" refers to the "long long integer" type, which is at least 64 bits on all platforms, including 32-bit environments."
И, будьте добры, не усложняйте жизнь себе и коллегам, домыслами и предположениями, единственное на что может себе позволить ориентироваться программист, это стандарт языка, только в этом случае не будет никаких "заклятий" и магии в коде. Стандарт же языка С++, как уже упоминал, aerin, никаких ограничений на тип int не предусматривает.
[Ответ]
dn2k4 16:30 11.06.2013
Сообщение от Spectator:
процессор z80 мне прекрасно знаком, я провел в дизассемблере не один и не два года, и знаю о чем говорю.
Число-то назови. Размер указателя которое.
[Ответ]
Spectator 18:36 11.06.2013
Сообщение от dn2k4:
Число-то назови. Размер указателя которое.
8 бит, конечно. байт.
байт сегмента + байт указателя в сегменте давали 64К памяти без страниц (которые использовались в 128К и выше режимах). Те самые 48К ОЗУ + 16 ПЗУ.
Z80 как бы 8 битный компьютер. вариантов немного.
[Ответ]
Spectator 18:43 11.06.2013
Сообщение от MadFish:
Ну а я тебе о чем толкую?
ИТОГО: в С/С++
1 размер int не обязан быть равен разрядности процессора.
2 размер указателя int * не обязан быть равным размеру int
3 указатель(ссылка) не обязан быть адресом ячейки памяти
что и требовалось доказать.
1. обязан
2. обязан
3. как Вы их вообще разделяете???? в 32 битных процессорах, чтобы не усложнять вопрос. указатель - pointer, это переменная, которая хранит адрес ячейки памяти.
ССЫЛКА может быть чем то иным и зависеть от модели памяти. но указатель, pointer, и не просто pointer, а memory pointer чем вообще МОЖЕТ быть? какие есть варианты? в принципе?
[Ответ]
Сообщение от x64:
sizeof(int) = 4 sizeof(int*) = 8
Сообщение от x32:
sizeof(int) = 4 sizeof(int*) = 4
ЗЫ. Домашнее задание, узнать чему равен sizeof(int&) [Ответ]
manifest 19:05 11.06.2013
Ну и мой пример для кучи раз википедия не авторитет.
Сообщение от MadFish:
Ну а я тебе о чем толкую?
ИТОГО: в С/С++
1 размер int не обязан быть равен разрядности процессора.
2 размер указателя int * не обязан быть равным размеру int
Сообщение от Spectator:
1. обязан
2. обязан
Код:
#include <iostream>
int main() {
using namespace std;
cout
<< "size of int : " << sizeof(int) << " bytes\n"
<< "size of int *: " << sizeof(int *) << " bytes\n"
<< "size of 'int' and 'int *' are " << (sizeof(int) == sizeof(int *) ? "" : "not ") << "equal\n"
<< flush;
}
Код:
size of int : 4 bytes
size of int *: 8 bytes
size of 'int' and 'int *' are not equal
Код:
$ c++ -v
Apple LLVM version 4.2 (clang-425.0.28) (based on LLVM 3.2svn)
Target: x86_64-apple-darwin12.4.0
Thread model: posix
MS VC?
Там не внезапно. Там был долгий МНОГОЛЕТНИЙ СПОР, каким по умолчанию будет int.
и из соображений совместимости и во избежание того что хрен одна программа вообще заработает при переносе оставили 4 байта.
Для кого то это внезапно. Для кого то не очень.
Я уже молчу что это внезапно вполне регулируется настройками, по умолчанию оставили вот так. Почему - см. выше.
[Ответ]