Size: a a a

2020 March 22

Z

Z-Vladimir in ru_ASUTP
uint128_t
Но у меня беда сейчас глобальнее,юзаю овновскую либу mobdus, она вроде как ос скрипом работает, но начинаю писать свои функции для чтения/записи регистров и начинает мрак)
Че за либа?
источник

u

uint128_t in ru_ASUTP
Z-Vladimir
Как не важен? Размер адреса 4 байта а uint8 - один. Это в переменную 4 и более можно адрес запихать)
размер указателя зависит от машины и не важен,если ты не ассемблере пишешь)
источник

u

uint128_t in ru_ASUTP
Z-Vladimir
Че за либа?
ModBus.lib
источник

u

uint128_t in ru_ASUTP
Овеновская
источник

Z

Z-Vladimir in ru_ASUTP
uint128_t
размер указателя зависит от машины и не важен,если ты не ассемблере пишешь)
Свои функции, в смысле, чтение определенных модбас регистров?
источник

u

uint128_t in ru_ASUTP
Да,именно
источник

Z

Z-Vladimir in ru_ASUTP
uint128_t
размер указателя зависит от машины и не важен,если ты не ассемблере пишешь)
Это пока объем исполняемой программы маленький. Как только адресация перевалит за 255, так и полетит в негодность такая функция с uint8.
источник

Z

Z-Vladimir in ru_ASUTP
uint128_t
Да,именно
А что именно не работает?
источник

u

uint128_t in ru_ASUTP
Z-Vladimir
Это пока объем исполняемой программы маленький. Как только адресация перевалит за 255, так и полетит в негодность такая функция с uint8.
а причем тут обьем программы? размер указателя от этого не зависит.Я надеюсь ты не путаешь размер указателя с размером типа данных,на который он указывает)
источник

Z

Z-Vladimir in ru_ASUTP
uint128_t
а причем тут обьем программы? размер указателя от этого не зависит.Я надеюсь ты не путаешь размер указателя с размером типа данных,на который он указывает)
В плк размер указателя 4 байта. Размер типа данных до указателя не причем. Пока переменные будут лежать в памяти в диапазоне адресов 00000000-000000FF, работать uint8 будет.
источник

u

uint128_t in ru_ASUTP
Z-Vladimir
А что именно не работает?
если обьявить ссылки на функциональные блоки либы,типа MB_RD_HOLD_REGS прямо в главном POU, и вызывать из в там же,в главном POU,то все работае,со скрипом.Но если написать функцию обертку,в которой также по ссылке вызывается тот же MB_RD_HOLD_REGS,то ничего не работает
источник

u

uint128_t in ru_ASUTP
Z-Vladimir
В плк размер указателя 4 байта. Размер типа данных до указателя не причем. Пока переменные будут лежать в памяти в диапазоне адресов 00000000-000000FF, работать uint8 будет.
что то у нас сломанный телефон получается)
источник

u

uint128_t in ru_ASUTP
ПЛК разные бывают,и указатель может быть там и 2-х байтный, и есть вообще CISK архитектурая,там с указателями вообще все хорошо.Если ты пишешь на си,паскале или плюсах,или даже в том же st,размер указателя не важен,потому что компилятор сам выставляет смещения, и еще и оптимизирует циклы,вызовы и проч.
источник

u

uint128_t in ru_ASUTP
uint8_t var; //переменная 1 байт
uint8_t *ptr; //указатель на 1 байт
ptr = &var; //указатель на var
ptr = &var + 1; //указатель на следующий байт после var
источник

Z

Z-Vladimir in ru_ASUTP
uint128_t
ПЛК разные бывают,и указатель может быть там и 2-х байтный, и есть вообще CISK архитектурая,там с указателями вообще все хорошо.Если ты пишешь на си,паскале или плюсах,или даже в том же st,размер указателя не важен,потому что компилятор сам выставляет смещения, и еще и оптимизирует циклы,вызовы и проч.
Вот как раз для st это важно. Там по сути нет указателей как таковых. Это просто число, компилятор не учитывает что переменная может использоваться для хранение указателя или просто для хранения произвольного значения.
источник

u

uint128_t in ru_ASUTP
Ну понятное дело,что указатель в st это не то что в си
источник

u

uint128_t in ru_ASUTP
В си почти все - указатель
источник

Z

Z-Vladimir in ru_ASUTP
Есть функция ADR, которая возвращает значение адреса. Но это значение записывается в обычную переменную, не указатель. Также можно в переменную присвоить любое произвольное значение, и через ^ можно попытаться обратиться к данным, которые будут находиться по введенному адресу.
источник

u

uint128_t in ru_ASUTP
нет
источник

u

uint128_t in ru_ASUTP
компилятор не даст тебе разыменовать простую переменную
источник