Есть ли 96-битный тип данных в C++, например .Системы сети.десятичное?
Привет,
Ну, название этого вопроса, возможно, само собой разумеется, но в то же время я уже знаю, что ответ на этот вопрос - "нет". Поэтому позвольте мне немного развить свой вопрос и цель.
Несколько лет назад в C++ был 12-байтовый целочисленный тип, по крайней мере, в компиляторе Microsoft. Но даже тогда это не имело смысла, потому что, как вы знаете, C++ преобразуется в ассемблерный код, и два самых больших целочисленных типа в ассемблере, насколько мне известно, это TBYTE и REAL10-оба размером 10 байт, причем REAL10-тип с плавающей запятой, а TBYTE-целочисленный тип. Итак, мой первый вопрос: поскольку 12-байтовый тип, о котором я упоминал ранее, является/был внутренним, неструктурированным типом, как он может поддерживаться в сборке? Что делать, если вы назначили значение настолько большое, что для него потребуется больше, чем 10 байт, предоставленных, скажем, TBYTE?
Мой второй вопрос включает в себя .NET. У нас есть 12-байтовая система.Десятичный тип, и все указывает на то, что он также является внутренним. Если вы посмотрите на IL-код, сгенерированный при компиляции вашей программы, вы можете увидеть, что это также не структура, библиотека или что-то еще, кроме типа, который, как представляется, непосредственно поддерживается MSIL и который прекрасно обрабатывается вашим компьютером, занимая не больше оперативной памяти, чем эти 12 байт.
Как это возможно, если сборка не предоставляет тип такого размера или функцию для обработки значений такого размера? Я прекрасно знаю, что .NET-программы компилируются в другой набор двоичных инструкций, чем неуправляемые программы C++, но вы все равно можете использовать такую программу, как MASM32, для разборки .NET-программ-и это имеет для меня идеальный смысл, поскольку .Чистые двоичные файлы по-прежнему состоят из самых простых инструкций, которые процессор должен уметь распознавать.
Итак, подводя итог тому, что стало более длинным вопросом, чем я намеревался:
1) Как я могу написать программу в сборке, которая может обрабатывать 12-байтовые значения с внутренними типами?
2) если 1) невозможно, то как это возможно в C# / .NET?
Спасибо.
Что я уже пробовал:
Я попытался найти нужный мне 12-байтовый тип данных в интернете.
Я попытался проанализировать дизассемблированную программу .NET, используя такой тип, но безрезультатно.
Я пытался написать свой собственный код для обработки таких значений, но это не совсем то, что я хочу.
raddevus
Я тоже часто задавался этим вопросом, и это отличный вопрос. Спасибо, что задали его здесь, где есть люди, которые могут предложить некоторые ответы. Действительно большой. Спасибо
deXo-fan
Я ценю твою благодарность, раддевус, и надеюсь, что ты получишь от этих решений столько же, сколько и я, потому что, как ты уже заметил, они дали нам несколько удивительных ответов!