Пример #1
0
        public void Usb_ParseGlobalDeclaration_PointerToUnsignedInt()
        {
            var usb = new UserSignatureBuilder(program);
            var gbl = usb.ParseGlobalDeclaration("unsigned int *uiPtr");

            Assert.AreEqual("uiPtr", gbl.Name);
            Assert.AreEqual("ptr(prim(UnsignedInt,4))", gbl.DataType.ToString());
        }
Пример #2
0
        public void Usb_ParseGlobalDeclaration_ArrayOfDouble()
        {
            var usb = new UserSignatureBuilder(program);
            var gbl = usb.ParseGlobalDeclaration("double dArr[12]");

            Assert.AreEqual("dArr", gbl.Name);
            Assert.AreEqual("arr(prim(Real,8),12)", gbl.DataType.ToString());
        }
Пример #3
0
        public void Usb_ParseGlobalDeclaration_Int()
        {
            var usb = new UserSignatureBuilder(program);
            var gbl = usb.ParseGlobalDeclaration("int test123");

            Assert.AreEqual("test123", gbl.Name);
            Assert.AreEqual("prim(SignedInt,4)", gbl.DataType.ToString());
        }
Пример #4
0
        private bool TryParseGlobal(string txtGlobal, out GlobalDataItem_v2 global)
        {
            global = null;
            if (program == null || program.Platform == null)
            {
                return(false);
            }

            // Attempt to parse the global declaration.
            var usb = new UserSignatureBuilder(program);

            global = usb.ParseGlobalDeclaration(txtGlobal);
            return(global != null);
        }
Пример #5
0
        public void SetUserGlobal(ulong linearAddress, string decl)
        {
            var addr     = Addr(linearAddress);
            var usb      = new UserSignatureBuilder(program);
            var global   = usb.ParseGlobalDeclaration(decl);
            var name     = global?.Name;
            var dataType = global?.DataType;

            if (name is null || dataType is null)
            {
                throw new ArgumentException(
                          $"Failed to parse global variable declaration: '{decl}'");
            }
            program.User.Globals[addr] = new UserGlobal(addr, name, dataType);
        }
Пример #6
0
        public void SetUserGlobal(Address addr, string decl)
        {
            var usb      = new UserSignatureBuilder(program);
            var global   = usb.ParseGlobalDeclaration(decl);
            var name     = global?.Name;
            var dataType = global?.DataType;

            if (name is null || dataType is null)
            {
                throw new ArgumentException(
                          $"Failed to parse global variable declaration: '{decl}'.");
            }
            var arch = program.Architecture;

            program.ModifyUserGlobal(arch, addr, dataType, name);
        }