Page 301 - ARM 64 Bit Assembly Language
P. 301
290 Chapter 8
The Patriot system was originally designed in 1974 to be mobile and to defend against aircraft
that move much more slowly than ballistic missiles. It was expected that the system would
be moved often, and therefore the computer would be rebooted frequently. Also, the slow-
moving aircraft would be much easier to track, and the error in predicting where it is expected
to be would not be significant. The system was modified in 1986 to be capable of shooting
down Soviet ballistic missiles. A SCUD missile travels at about twice the speed of the Soviet
missiles that the system was re-designed for.
The system was deployed to Iraq in 1990, and successfully shot down a SCUD missile in Jan-
uary of 1991. In mid-February of 1991, Israeli troops discovered that if the system became
inaccurate if it was allowed to run for long periods of time. They claimed that the system
would become unreliable after twenty hours of operation. U.S. military did not think the dis-
covery was significant, but on February 16th, a software update was released. Unfortunately,
the update could not immediately reach all units because of wartime difficulties in transporta-
tion. The Army released a memo on February 21st, stating that the system was not to be run
for “very long times,” but did not specify how long a “very long time” would be. The software
update reached Dhahran one day after the Patriot Missile system failed to intercept a SCUD
missile, resulting in the death of 28 Americans and many more injuries.
Part of the reason this error was not found earlier was that the program was written in assem-
bly language, and had been patched several times in its 15-year life. The code was difficult
to understand and maintain, and did not conform to good programming practices. The peo-
ple who worked to modify the code to handle the SCUD missiles were not as familiar with
the code as they would have been if it were written more recently, and time was a critical fac-
tor. Prolonged testing could have caused a disaster by keeping the system out of the hands of
soldiers in a time of war. The people at Raytheon Labs had some tough decisions to make.
It cannot be said that Raytheon was guilty of negligence or malpractice. The problem with
the system was not necessarily the developers, but that the system was modified often and
in inconsistent ways, without complete understanding. However, it should be noted that if
the hardware clock had counted time in eighths or sixteenths of a second, there would have
been no round off error at all. Using floating point for the calculations would not have solved
the problem, because the value 1 cannot be represented precisely using either fixed point or
10
floating point.
8.10 Chapter summary
Sometimes it is desirable to perform calculations involving non-integral numbers. The two
common ways to represent non-integral numbers in a computer are fixed point and floating
point. A fixed point representation allows the programmer to perform calculations with non-
integral numbers using only integer operations. With fixed point, the programmer must track