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>
… …