@@ -780,6 +780,64 @@ <h3 id="ppc64">64-bit PowerPC, a.k.a. ppc64</h3>
780
780
781
781
</ ul >
782
782
783
+ < h3 id ="s390x "> IBM z/Architecture, a.k.a. s390x</ h3 >
784
+
785
+ < p >
786
+ The registers < code > R10</ code > and < code > R11</ code > are reserved.
787
+ The assembler uses them to hold temporary values when assembling some instructions.
788
+ </ p >
789
+
790
+ < p >
791
+ < code > R13</ code > points to the < code > g</ code > (goroutine) structure.
792
+ This register must be referred to as < code > g</ code > ; the name < code > R13</ code > is not recognized.
793
+ </ p >
794
+
795
+ < p >
796
+ < code > R15</ code > points to the stack frame and should typically only be accessed using the
797
+ virtual registers < code > SP</ code > and < code > FP</ code > .
798
+ </ p >
799
+
800
+ < p >
801
+ Load- and store-multiple instructions operate on a range of registers.
802
+ The range of registers is specified by a start register and an end register.
803
+ For example, < code > LMG</ code > < code > (R9),</ code > < code > R5,</ code > < code > R7</ code > would load
804
+ < code > R5</ code > , < code > R6</ code > and < code > R7</ code > with the 64-bit values at
805
+ < code > 0(R9)</ code > , < code > 8(R9)</ code > and < code > 16(R9)</ code > respectively.
806
+ </ p >
807
+
808
+ < p >
809
+ Storage-and-storage instructions such as < code > MVC</ code > and < code > XC</ code > are written
810
+ with the length as the first argument.
811
+ For example, < code > XC</ code > < code > $8,</ code > < code > (R9),</ code > < code > (R9)</ code > would clear
812
+ eight bytes at the address specified in < code > R9</ code > .
813
+ </ p >
814
+
815
+ < p >
816
+ If a vector instruction takes a length or an index as an argument then it will be the
817
+ first argument.
818
+ For example, < code > VLEIF</ code > < code > $1,</ code > < code > $16,</ code > < code > V2</ code > will load
819
+ the value sixteen into index one of < code > V2</ code > .
820
+ Care should be taken when using vector instructions to ensure that they are available at
821
+ runtime.
822
+ To use vector instructions a machine must have both the vector facility (bit 129 in the
823
+ facility list) and kernel support.
824
+ Without kernel support a vector instruction will have no effect (it will be equivalent
825
+ to a < code > NOP</ code > instruction).
826
+ </ p >
827
+
828
+ < p >
829
+ Addressing modes:
830
+ </ p >
831
+
832
+ < ul >
833
+
834
+ < li >
835
+ < code > (R5)(R6*1)</ code > : The location at < code > R5</ code > plus < code > R6</ code > .
836
+ It is a scaled mode as on the x86, but the only scale allowed is < code > 1</ code > .
837
+ </ li >
838
+
839
+ </ ul >
840
+
783
841
< h3 id ="unsupported_opcodes "> Unsupported opcodes</ h3 >
784
842
785
843
< p >
0 commit comments