What do I need to study in order to understand and design a programming language?
I do not understand what is your intended meaning in "understand the
specs of an already made programming language". There are always many
things to be understood in a complex entity, and any understanding
must be related to a purpose.

If your purpose is just to understand how to program with this
language, understanding how it is implemented is not, and should not
be your problem. Certainly not at first. What you have to understand
is the high level concepts used in the language, and that may depend
very much on the language. You need to understand the style of
programming the language is promoting. All that comes to some extent
with the manuals and tutorials. But some concepts may require advanced
knowledge, some of which may be general, and some which may be very
specific. What you should learn will be clear from the manuals and
tutorials.

If you want general knowledge on language architecture, on the role of
syntax and semantics, on the main techniques useful to write compilers
and interpreters, you should get a book on compiler writing. Many will
do.  The most popular is probably the Dragon Book in one of its
successive edition.

To design a programming language, there is no specific study, other
than a good understanding of the structure and concepts used generally
in programming languages (see above). A good knowledge of logic and mathematical style cannot hurt. Knowing many programming languages with preferably very different styles is probably a prerequisite. The hard part is knowing why you
want to do it, and what for. A language is a vehicle for
communication. Hence, if you are alone using it you are wasting your
time (unless it is a proof of concept, which is usually related to
some advanced theoretical work). You have to have a purpose for your
language, and an idea that it is better for that purpose than other
languages that may already exist. If you still have to read what is
useful for designing it (other than general knowledge - see above),
you are not ripe for designing one. The needed knowledge must precede
the intent to design a language. It must be the expression of a need,
before it becomes a will. Actually this is often true of creative activity.

Languages are not necessarily general purpose languages. They may be
very useful without having Turing power. A language must be thought to
express some concepts in a given domain of discourse. For example,
languages like HTML, or TeX. are intended to express textual layout of
documents. They can be very sophisticated, but not intended to write
graph algorithms or matrix processing. Other languages may appear like
weak algorithmic languages because they have been designed to posses
specific properties that more general languages will not have, such as
automatic analysis of their computational characteristics. Some
languages may use specific kinds of parallel processing that are
easier to analyze and optimize.`Some of these specific languages, or
some features of more general languages require high mathematical
sophistication in specific domains.  Naming them here would just be
name dropping.

Regarding processor architecture, I cannot help you. It is largely a
different topic, though it does matter for some aspects of compiling,
and I am not competent.

If you want to see an interpreter written in half a page, that
implement a general purpose programming language that was actually
used a lot (in more sophisticated versions, to be honest), look for
the Lisp 1.5 interpreter. It is somewhere in this old book.