System Programming

 

Component: At system programming language structural level, component is instruction provided by ISA (Instruction Set Architecture)

Connector: Connector is state of machine that is specified by the values stored in memory and register file.

Interface:

Link:

Example: Say we write an assembly language to implement the function: clear the screen, which is the very basic function that be called by upper level system:

 

Coding Example:

;________________

;this main program

.code

            main              proc far

                                    mov    ax,@data

                                    mov    ds,as

                                    call     clear

                                    mov    ah,4ch

                                    int 21h

            main              endp

            ;_________________

            ;this subroutine clears the screen

            clear               proc

                                    mov    ax,0600h

                                    mov    bh,07

                                    mov    cx,0000

                                    mov    dx,184fh

                                    int       10h

                                    ret

            clear               endp

            ;_________________

           

            We want to show the sub-archirecture structure here, so just focus on how to describe the component “call clear”:

 

 

 

 

 

<!- - Namespace declaration - - >

<?xml version = “1.0”  encoding = “UTF-8” ?>

<xArch  xmlns = “http://www.ics.uci.edu/pub/arch/xArch/instance.xsd”

xmlns:instance = “http://www.ics.uci.edu/pub/arch/xArch/instance.xsd”

xmlns:types = “http://www.ics.uci.edu/pub/arch/xArch/types.xsd”

xmlns:xlink = “http://www.w3.org/1999/xlink”

xmlns:xsi = “http://www.w3.org/2000/10/XMLSchema-instance”>

 

<types:archStructure xsi:type = “types:ArchStructure”>

 

<!- - Component: call clear Description- - >

      <types:component instance:id = “CallClearComp” xsi:type = “types:Component”>

                  <types:description xsi:type = “instance:Description”>call clear</types:description>

                  <types:interface instance:id = “CallClearCompRight” xsi:type = “types:Interface”>

                  <types:description xsi:type = “instance:Description”>CallClear.Right </types:description>

                  <types:direction xsi:type = “instance:Direction” >inout</types:direction>

                  <types:type xlink:type = “simple” xlink:href = “ #tRightType”/>

                  </types:interface>

<types:interface instance:id = “CallClearCompLeft” xsi:type = “types:Interface”>

                  <types:description xsi:type = “instance:Description”>CallClear.Left</types:description>

                  <types:direction xsi:type = “instance:Direction” >inout</types:direction>

                  <types:type xlink:type = “simple” xlink:href = “ #tLeftType”/>

                  </types:interface>

                  <types:type xlink:type = “simple” xlink:href = “#tCallClear” />

 

                  <! - - subArchitecture description - ->

                  <types: subArchitecture>         

                              <types: archStructure>

                              <! – component: int10h description - ->

                              <types:component instance:id = “int10hComp” xsi:type = “types:Component”>

                  <types:description xsi:type = “instance:Description”>int 10h</types:description>

                  <types:interface instance:id = “int10hCompRight” xsi:type = “types:Interface”>

                              <types:description xsi:type = “instance:Description”>int10h.Right </types:description>

                              <types:direction xsi:type = “instance:Direction” >inout</types:direction>

                              <types:type xlink:type = “simple” xlink:href = “ #tRightType”/>

                  </types:interface>

<types:interface instance:id = “int10hCompLeft” xsi:type = “types:Interface”>

                              <types:description xsi:type = “instance:Description”>int10h.Left</types:description>

                              <types:direction xsi:type = “instance:Direction” >inout</types:direction>

                              <types:type xlink:type = “simple” xlink:href = “ #tLeftType”/>

                  </types:interface>

                  <types:type xlink:type = “simple” xlink:href = “#tint10h” />

                  </types:component>

<! – component: ret description - ->

                              <types:component instance:id = “retComp” xsi:type = “types:Component”>

                  <types:description xsi:type = “instance:Description”>ret</types:description>

                  <types:interface instance:id = “retCompRight” xsi:type = “types:Interface”>

                              <types:description xsi:type = “instance:Description”>ret.Right </types:description>

                              <types:direction xsi:type = “instance:Direction” >inout</types:direction>

                              <types:type xlink:type = “simple” xlink:href = “ #tRightType”/>

                  </types:interface>

<types:interface instance:id = “retCompLeft” xsi:type = “types:Interface”>

                              <types:description xsi:type = “instance:Description”>ret.Left</types:description>

                              <types:direction xsi:type = “instance:Direction” >inout</types:direction>

                              <types:type xlink:type = “simple” xlink:href = “ #tLeftType”/>

                  </types:interface>

                  <types:type xlink:type = “simple” xlink:href = “#tret” />

                  </types:component>

 

<!- - Connector: Con(int10h - ret) Description- - >

      <types:connector instance:id = “Con” xsi:type = “types:Connector”>

                  <types:description xsi:type = “instance:Description” >Connector</types:description>

                  <types:interface instance:id = “ConLeft” xsi:type = “types:Interface”>

                              <types:description xsi:type = “instance:Description”>Con.Left</types:description>

                              <types:direction xsi:type = “instance:Direction:>in</types:direction>

                              <types:type xlink:type = “simple” xlink:href = “#tLeftType”/>

                  </types:interface>

                  <types:interface instance:id = “ConRight” xsi:type = “types:Interface”>

                              <types:description xsi:type = “instance:Description”>Con.Right</types:description>

                              <types:direction xsi:type = “instance:Direction:>out</types:direction>

                              <types:type xlink:type = “simple” xlink:href = “#tRightType”/>

                  </types:interface>

                  <types:type xlink:type = “simple” xlink:href= “#tCon” />

      </types:connector>

 

<!- - Link: int10h – con - ret Description- - >

<types:link instance:id = “link1” xsi:type = “types:Link”>

                  <types:description xsi:type = “instance:Description”>int10h – Con</types:description>

                  <types:point xsi:type = “types:Point”>

                              <instance:anchorOnInterface xlink:href = “#ConLeft” xsi:type = “instance:XMLLink” xlink:type = “simple”/>

                  </types:point>

                  <types:point xsi:type = “types:Point”>

                              <instance:anchorOnInterface xlink:href = “#int10hRight” xsi:type = “instance:XMLLink” xlink:type = “simple”/>

                  </types:point>

</types:link>

 

<types:link instance:id = “link2” xsi:type = “types:Link”>

                  <types:description xsi:type = “instance:Description”>Con– ret</types:description>

                  <types:point xsi:type = “types:Point”>

                              <instance:anchorOnInterface xlink:href = “#retLeft” xsi:type = “instance:XMLLink” xlink:type = “simple”/>

                  </types:point>

                  <types:point xsi:type = “types:Point”>

                              <instance:anchorOnInterface xlink:href = “#ConRight” xsi:type = “instance:XMLLink” xlink:type = “simple”/>

                  </types:point>

</types:link>

 

</types: archStructure>

 

                  <types: signatureInterfaceMapping>

                  <types: outerSignature xsi:type= “simple” xlink:href = “callclearLeft”/>

                  <types: innerInterface xsi:type= “simple” xlink:href= “int10hLeft” />

<types: outerSignature xsi:type= “simple” xlink:href = “callclearRight”/>

                  <types: innerInterface xsi:type= “simple” xlink:href= “retRight” />

                  </types: signatureInterfaceMapping>

</types:subArchitecture>

</types:component>

… …