github.com/euank/go@v0.0.0-20160829210321-495514729181/src/cmd/internal/obj/s390x/a.out.go (about) 1 // Based on cmd/internal/obj/ppc64/a.out.go. 2 // 3 // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. 4 // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) 5 // Portions Copyright © 1997-1999 Vita Nuova Limited 6 // Portions Copyright © 2000-2008 Vita Nuova Holdings Limited (www.vitanuova.com) 7 // Portions Copyright © 2004,2006 Bruce Ellis 8 // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) 9 // Revisions Copyright © 2000-2008 Lucent Technologies Inc. and others 10 // Portions Copyright © 2009 The Go Authors. All rights reserved. 11 // 12 // Permission is hereby granted, free of charge, to any person obtaining a copy 13 // of this software and associated documentation files (the "Software"), to deal 14 // in the Software without restriction, including without limitation the rights 15 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 16 // copies of the Software, and to permit persons to whom the Software is 17 // furnished to do so, subject to the following conditions: 18 // 19 // The above copyright notice and this permission notice shall be included in 20 // all copies or substantial portions of the Software. 21 // 22 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 23 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 24 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 25 // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 26 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 27 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 28 // THE SOFTWARE. 29 30 package s390x 31 32 import "cmd/internal/obj" 33 34 //go:generate go run ../stringer.go -i $GOFILE -o anames.go -p s390x 35 36 const ( 37 NSNAME = 8 38 NSYM = 50 39 NREG = 16 // number of general purpose registers 40 NFREG = 16 // number of floating point registers 41 ) 42 43 const ( 44 // General purpose registers (GPRs). 45 REG_R0 = obj.RBaseS390X + iota 46 REG_R1 47 REG_R2 48 REG_R3 49 REG_R4 50 REG_R5 51 REG_R6 52 REG_R7 53 REG_R8 54 REG_R9 55 REG_R10 56 REG_R11 57 REG_R12 58 REG_R13 59 REG_R14 60 REG_R15 61 62 // Floating point registers (FPRs). 63 REG_F0 64 REG_F1 65 REG_F2 66 REG_F3 67 REG_F4 68 REG_F5 69 REG_F6 70 REG_F7 71 REG_F8 72 REG_F9 73 REG_F10 74 REG_F11 75 REG_F12 76 REG_F13 77 REG_F14 78 REG_F15 79 80 // Vector registers (VRs) - only available when the vector 81 // facility is installed. 82 // V0-V15 are aliases for F0-F15. 83 // We keep them in a separate space to make printing etc. easier 84 // If the code generator ever emits vector instructions it will 85 // need to take into account the aliasing. 86 REG_V0 87 REG_V1 88 REG_V2 89 REG_V3 90 REG_V4 91 REG_V5 92 REG_V6 93 REG_V7 94 REG_V8 95 REG_V9 96 REG_V10 97 REG_V11 98 REG_V12 99 REG_V13 100 REG_V14 101 REG_V15 102 REG_V16 103 REG_V17 104 REG_V18 105 REG_V19 106 REG_V20 107 REG_V21 108 REG_V22 109 REG_V23 110 REG_V24 111 REG_V25 112 REG_V26 113 REG_V27 114 REG_V28 115 REG_V29 116 REG_V30 117 REG_V31 118 119 // Access registers (ARs). 120 // The thread pointer is typically stored in the register pair 121 // AR0 and AR1. 122 REG_AR0 123 REG_AR1 124 REG_AR2 125 REG_AR3 126 REG_AR4 127 REG_AR5 128 REG_AR6 129 REG_AR7 130 REG_AR8 131 REG_AR9 132 REG_AR10 133 REG_AR11 134 REG_AR12 135 REG_AR13 136 REG_AR14 137 REG_AR15 138 139 REG_RESERVED // end of allocated registers 140 141 REGZERO = REG_R0 // set to zero 142 REGARG = -1 // -1 disables passing the first argument in register 143 REGRT1 = REG_R3 // used during zeroing of the stack - not reserved 144 REGRT2 = REG_R4 // used during zeroing of the stack - not reserved 145 REGTMP = REG_R10 // scratch register used in the assembler and linker 146 REGTMP2 = REG_R11 // scratch register used in the assembler and linker 147 REGCTXT = REG_R12 // context for closures 148 REGG = REG_R13 // G 149 REG_LR = REG_R14 // link register 150 REGSP = REG_R15 // stack pointer 151 ) 152 153 const ( 154 BIG = 32768 - 8 155 DISP12 = 4096 156 DISP16 = 65536 157 DISP20 = 1048576 158 ) 159 160 const ( 161 // mark flags 162 LABEL = 1 << 0 163 LEAF = 1 << 1 164 FLOAT = 1 << 2 165 BRANCH = 1 << 3 166 LOAD = 1 << 4 167 FCMP = 1 << 5 168 SYNC = 1 << 6 169 LIST = 1 << 7 170 FOLL = 1 << 8 171 NOSCHED = 1 << 9 172 ) 173 174 const ( // comments from func aclass in asmz.go 175 C_NONE = iota 176 C_REG // general-purpose register (64-bit) 177 C_FREG // floating-point register (64-bit) 178 C_VREG // vector register (128-bit) 179 C_AREG // access register (32-bit) 180 C_ZCON // constant == 0 181 C_SCON // 0 <= constant <= 0x7fff (positive int16) 182 C_UCON // constant & 0xffff == 0 (int16 or uint16) 183 C_ADDCON // 0 > constant >= -0x8000 (negative int16) 184 C_ANDCON // constant <= 0xffff 185 C_LCON // constant (int32 or uint32) 186 C_DCON // constant (int64 or uint64) 187 C_SACON // computed address, 16-bit displacement, possibly SP-relative 188 C_LACON // computed address, 32-bit displacement, possibly SP-relative 189 C_DACON // computed address, 64-bit displacment? 190 C_SBRA // short branch 191 C_LBRA // long branch 192 C_SAUTO // short auto 193 C_LAUTO // long auto 194 C_ZOREG // heap address, register-based, displacement == 0 195 C_SOREG // heap address, register-based, int16 displacement 196 C_LOREG // heap address, register-based, int32 displacement 197 C_TLS_LE // TLS - local exec model (for executables) 198 C_TLS_IE // TLS - initial exec model (for shared libraries loaded at program startup) 199 C_GOK // general address 200 C_ADDR // relocation for extern or static symbols (loads and stores) 201 C_SYMADDR // relocation for extern or static symbols (address taking) 202 C_GOTADDR // GOT slot for a symbol in -dynlink mode 203 C_TEXTSIZE // text size 204 C_ANY 205 C_NCLASS // must be the last 206 ) 207 208 const ( 209 // integer arithmetic 210 AADD = obj.ABaseS390X + obj.A_ARCHSPECIFIC + iota 211 AADDC 212 AADDME 213 AADDE 214 AADDZE 215 ADIVW 216 ADIVWU 217 ADIVD 218 ADIVDU 219 AMULLW 220 AMULLD 221 AMULHD 222 AMULHDU 223 ASUB 224 ASUBC 225 ASUBME 226 ASUBV 227 ASUBE 228 ASUBZE 229 ANEG 230 231 // integer moves 232 AMOVWBR 233 AMOVB 234 AMOVBZ 235 AMOVH 236 AMOVHBR 237 AMOVHZ 238 AMOVW 239 AMOVWZ 240 AMOVD 241 AMOVDBR 242 243 // integer bitwise 244 AAND 245 AANDN 246 ANAND 247 ANOR 248 AOR 249 AORN 250 AXOR 251 ASLW 252 ASLD 253 ASRW 254 ASRAW 255 ASRD 256 ASRAD 257 ARLL 258 ARLLG 259 260 // floating point 261 AFABS 262 AFADD 263 AFADDS 264 AFCMPO 265 AFCMPU 266 ACEBR 267 AFDIV 268 AFDIVS 269 AFMADD 270 AFMADDS 271 AFMOVD 272 AFMOVS 273 AFMSUB 274 AFMSUBS 275 AFMUL 276 AFMULS 277 AFNABS 278 AFNEG 279 AFNMADD 280 AFNMADDS 281 AFNMSUB 282 AFNMSUBS 283 ALEDBR 284 ALDEBR 285 AFSUB 286 AFSUBS 287 AFSQRT 288 AFSQRTS 289 AFIEBR 290 AFIDBR 291 292 // convert from int32/int64 to float/float64 293 ACEFBRA 294 ACDFBRA 295 ACEGBRA 296 ACDGBRA 297 298 // convert from float/float64 to int32/int64 299 ACFEBRA 300 ACFDBRA 301 ACGEBRA 302 ACGDBRA 303 304 // convert from uint32/uint64 to float/float64 305 ACELFBR 306 ACDLFBR 307 ACELGBR 308 ACDLGBR 309 310 // convert from float/float64 to uint32/uint64 311 ACLFEBR 312 ACLFDBR 313 ACLGEBR 314 ACLGDBR 315 316 // compare 317 ACMP 318 ACMPU 319 ACMPW 320 ACMPWU 321 322 // compare and swap 323 ACS 324 ACSG 325 326 // serialize 327 ASYNC 328 329 // branch 330 ABC 331 ABCL 332 ABEQ 333 ABGE 334 ABGT 335 ABLE 336 ABLT 337 ABNE 338 ABVC 339 ABVS 340 ASYSCALL 341 342 // compare and branch 343 ACMPBEQ 344 ACMPBGE 345 ACMPBGT 346 ACMPBLE 347 ACMPBLT 348 ACMPBNE 349 ACMPUBEQ 350 ACMPUBGE 351 ACMPUBGT 352 ACMPUBLE 353 ACMPUBLT 354 ACMPUBNE 355 356 // storage-and-storage 357 AMVC 358 ACLC 359 AXC 360 AOC 361 ANC 362 363 // load 364 AEXRL 365 ALARL 366 ALA 367 ALAY 368 369 // interlocked load and op 370 ALAA 371 ALAAG 372 ALAAL 373 ALAALG 374 ALAN 375 ALANG 376 ALAX 377 ALAXG 378 ALAO 379 ALAOG 380 381 // load/store multiple 382 ALMY 383 ALMG 384 ASTMY 385 ASTMG 386 387 // store clock 388 ASTCK 389 ASTCKC 390 ASTCKE 391 ASTCKF 392 393 // macros 394 ACLEAR 395 396 // vector 397 AVA 398 AVAB 399 AVAH 400 AVAF 401 AVAG 402 AVAQ 403 AVACC 404 AVACCB 405 AVACCH 406 AVACCF 407 AVACCG 408 AVACCQ 409 AVAC 410 AVACQ 411 AVACCC 412 AVACCCQ 413 AVN 414 AVNC 415 AVAVG 416 AVAVGB 417 AVAVGH 418 AVAVGF 419 AVAVGG 420 AVAVGL 421 AVAVGLB 422 AVAVGLH 423 AVAVGLF 424 AVAVGLG 425 AVCKSM 426 AVCEQ 427 AVCEQB 428 AVCEQH 429 AVCEQF 430 AVCEQG 431 AVCEQBS 432 AVCEQHS 433 AVCEQFS 434 AVCEQGS 435 AVCH 436 AVCHB 437 AVCHH 438 AVCHF 439 AVCHG 440 AVCHBS 441 AVCHHS 442 AVCHFS 443 AVCHGS 444 AVCHL 445 AVCHLB 446 AVCHLH 447 AVCHLF 448 AVCHLG 449 AVCHLBS 450 AVCHLHS 451 AVCHLFS 452 AVCHLGS 453 AVCLZ 454 AVCLZB 455 AVCLZH 456 AVCLZF 457 AVCLZG 458 AVCTZ 459 AVCTZB 460 AVCTZH 461 AVCTZF 462 AVCTZG 463 AVEC 464 AVECB 465 AVECH 466 AVECF 467 AVECG 468 AVECL 469 AVECLB 470 AVECLH 471 AVECLF 472 AVECLG 473 AVERIM 474 AVERIMB 475 AVERIMH 476 AVERIMF 477 AVERIMG 478 AVERLL 479 AVERLLB 480 AVERLLH 481 AVERLLF 482 AVERLLG 483 AVERLLV 484 AVERLLVB 485 AVERLLVH 486 AVERLLVF 487 AVERLLVG 488 AVESLV 489 AVESLVB 490 AVESLVH 491 AVESLVF 492 AVESLVG 493 AVESL 494 AVESLB 495 AVESLH 496 AVESLF 497 AVESLG 498 AVESRA 499 AVESRAB 500 AVESRAH 501 AVESRAF 502 AVESRAG 503 AVESRAV 504 AVESRAVB 505 AVESRAVH 506 AVESRAVF 507 AVESRAVG 508 AVESRL 509 AVESRLB 510 AVESRLH 511 AVESRLF 512 AVESRLG 513 AVESRLV 514 AVESRLVB 515 AVESRLVH 516 AVESRLVF 517 AVESRLVG 518 AVX 519 AVFAE 520 AVFAEB 521 AVFAEH 522 AVFAEF 523 AVFAEBS 524 AVFAEHS 525 AVFAEFS 526 AVFAEZB 527 AVFAEZH 528 AVFAEZF 529 AVFAEZBS 530 AVFAEZHS 531 AVFAEZFS 532 AVFEE 533 AVFEEB 534 AVFEEH 535 AVFEEF 536 AVFEEBS 537 AVFEEHS 538 AVFEEFS 539 AVFEEZB 540 AVFEEZH 541 AVFEEZF 542 AVFEEZBS 543 AVFEEZHS 544 AVFEEZFS 545 AVFENE 546 AVFENEB 547 AVFENEH 548 AVFENEF 549 AVFENEBS 550 AVFENEHS 551 AVFENEFS 552 AVFENEZB 553 AVFENEZH 554 AVFENEZF 555 AVFENEZBS 556 AVFENEZHS 557 AVFENEZFS 558 AVFA 559 AVFADB 560 AWFADB 561 AWFK 562 AWFKDB 563 AVFCE 564 AVFCEDB 565 AVFCEDBS 566 AWFCEDB 567 AWFCEDBS 568 AVFCH 569 AVFCHDB 570 AVFCHDBS 571 AWFCHDB 572 AWFCHDBS 573 AVFCHE 574 AVFCHEDB 575 AVFCHEDBS 576 AWFCHEDB 577 AWFCHEDBS 578 AWFC 579 AWFCDB 580 AVCDG 581 AVCDGB 582 AWCDGB 583 AVCDLG 584 AVCDLGB 585 AWCDLGB 586 AVCGD 587 AVCGDB 588 AWCGDB 589 AVCLGD 590 AVCLGDB 591 AWCLGDB 592 AVFD 593 AVFDDB 594 AWFDDB 595 AVLDE 596 AVLDEB 597 AWLDEB 598 AVLED 599 AVLEDB 600 AWLEDB 601 AVFM 602 AVFMDB 603 AWFMDB 604 AVFMA 605 AVFMADB 606 AWFMADB 607 AVFMS 608 AVFMSDB 609 AWFMSDB 610 AVFPSO 611 AVFPSODB 612 AWFPSODB 613 AVFLCDB 614 AWFLCDB 615 AVFLNDB 616 AWFLNDB 617 AVFLPDB 618 AWFLPDB 619 AVFSQ 620 AVFSQDB 621 AWFSQDB 622 AVFS 623 AVFSDB 624 AWFSDB 625 AVFTCI 626 AVFTCIDB 627 AWFTCIDB 628 AVGFM 629 AVGFMB 630 AVGFMH 631 AVGFMF 632 AVGFMG 633 AVGFMA 634 AVGFMAB 635 AVGFMAH 636 AVGFMAF 637 AVGFMAG 638 AVGEF 639 AVGEG 640 AVGBM 641 AVZERO 642 AVONE 643 AVGM 644 AVGMB 645 AVGMH 646 AVGMF 647 AVGMG 648 AVISTR 649 AVISTRB 650 AVISTRH 651 AVISTRF 652 AVISTRBS 653 AVISTRHS 654 AVISTRFS 655 AVL 656 AVLR 657 AVLREP 658 AVLREPB 659 AVLREPH 660 AVLREPF 661 AVLREPG 662 AVLC 663 AVLCB 664 AVLCH 665 AVLCF 666 AVLCG 667 AVLEH 668 AVLEF 669 AVLEG 670 AVLEB 671 AVLEIH 672 AVLEIF 673 AVLEIG 674 AVLEIB 675 AVFI 676 AVFIDB 677 AWFIDB 678 AVLGV 679 AVLGVB 680 AVLGVH 681 AVLGVF 682 AVLGVG 683 AVLLEZ 684 AVLLEZB 685 AVLLEZH 686 AVLLEZF 687 AVLLEZG 688 AVLM 689 AVLP 690 AVLPB 691 AVLPH 692 AVLPF 693 AVLPG 694 AVLBB 695 AVLVG 696 AVLVGB 697 AVLVGH 698 AVLVGF 699 AVLVGG 700 AVLVGP 701 AVLL 702 AVMX 703 AVMXB 704 AVMXH 705 AVMXF 706 AVMXG 707 AVMXL 708 AVMXLB 709 AVMXLH 710 AVMXLF 711 AVMXLG 712 AVMRH 713 AVMRHB 714 AVMRHH 715 AVMRHF 716 AVMRHG 717 AVMRL 718 AVMRLB 719 AVMRLH 720 AVMRLF 721 AVMRLG 722 AVMN 723 AVMNB 724 AVMNH 725 AVMNF 726 AVMNG 727 AVMNL 728 AVMNLB 729 AVMNLH 730 AVMNLF 731 AVMNLG 732 AVMAE 733 AVMAEB 734 AVMAEH 735 AVMAEF 736 AVMAH 737 AVMAHB 738 AVMAHH 739 AVMAHF 740 AVMALE 741 AVMALEB 742 AVMALEH 743 AVMALEF 744 AVMALH 745 AVMALHB 746 AVMALHH 747 AVMALHF 748 AVMALO 749 AVMALOB 750 AVMALOH 751 AVMALOF 752 AVMAL 753 AVMALB 754 AVMALHW 755 AVMALF 756 AVMAO 757 AVMAOB 758 AVMAOH 759 AVMAOF 760 AVME 761 AVMEB 762 AVMEH 763 AVMEF 764 AVMH 765 AVMHB 766 AVMHH 767 AVMHF 768 AVMLE 769 AVMLEB 770 AVMLEH 771 AVMLEF 772 AVMLH 773 AVMLHB 774 AVMLHH 775 AVMLHF 776 AVMLO 777 AVMLOB 778 AVMLOH 779 AVMLOF 780 AVML 781 AVMLB 782 AVMLHW 783 AVMLF 784 AVMO 785 AVMOB 786 AVMOH 787 AVMOF 788 AVNO 789 AVNOT 790 AVO 791 AVPK 792 AVPKH 793 AVPKF 794 AVPKG 795 AVPKLS 796 AVPKLSH 797 AVPKLSF 798 AVPKLSG 799 AVPKLSHS 800 AVPKLSFS 801 AVPKLSGS 802 AVPKS 803 AVPKSH 804 AVPKSF 805 AVPKSG 806 AVPKSHS 807 AVPKSFS 808 AVPKSGS 809 AVPERM 810 AVPDI 811 AVPOPCT 812 AVREP 813 AVREPB 814 AVREPH 815 AVREPF 816 AVREPG 817 AVREPI 818 AVREPIB 819 AVREPIH 820 AVREPIF 821 AVREPIG 822 AVSCEF 823 AVSCEG 824 AVSEL 825 AVSL 826 AVSLB 827 AVSLDB 828 AVSRA 829 AVSRAB 830 AVSRL 831 AVSRLB 832 AVSEG 833 AVSEGB 834 AVSEGH 835 AVSEGF 836 AVST 837 AVSTEH 838 AVSTEF 839 AVSTEG 840 AVSTEB 841 AVSTM 842 AVSTL 843 AVSTRC 844 AVSTRCB 845 AVSTRCH 846 AVSTRCF 847 AVSTRCBS 848 AVSTRCHS 849 AVSTRCFS 850 AVSTRCZB 851 AVSTRCZH 852 AVSTRCZF 853 AVSTRCZBS 854 AVSTRCZHS 855 AVSTRCZFS 856 AVS 857 AVSB 858 AVSH 859 AVSF 860 AVSG 861 AVSQ 862 AVSCBI 863 AVSCBIB 864 AVSCBIH 865 AVSCBIF 866 AVSCBIG 867 AVSCBIQ 868 AVSBCBI 869 AVSBCBIQ 870 AVSBI 871 AVSBIQ 872 AVSUMG 873 AVSUMGH 874 AVSUMGF 875 AVSUMQ 876 AVSUMQF 877 AVSUMQG 878 AVSUM 879 AVSUMB 880 AVSUMH 881 AVTM 882 AVUPH 883 AVUPHB 884 AVUPHH 885 AVUPHF 886 AVUPLH 887 AVUPLHB 888 AVUPLHH 889 AVUPLHF 890 AVUPLL 891 AVUPLLB 892 AVUPLLH 893 AVUPLLF 894 AVUPL 895 AVUPLB 896 AVUPLHW 897 AVUPLF 898 899 // binary 900 ABYTE 901 AWORD 902 ADWORD 903 904 // end marker 905 ALAST 906 907 // aliases 908 ABR = obj.AJMP 909 ABL = obj.ACALL 910 )