github.com/rakyll/go@v0.0.0-20170216000551-64c02460d703/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 AADDE 213 AADDW 214 ADIVW 215 ADIVWU 216 ADIVD 217 ADIVDU 218 AMODW 219 AMODWU 220 AMODD 221 AMODDU 222 AMULLW 223 AMULLD 224 AMULHD 225 AMULHDU 226 ASUB 227 ASUBC 228 ASUBV 229 ASUBE 230 ASUBW 231 ANEG 232 ANEGW 233 234 // integer moves 235 AMOVWBR 236 AMOVB 237 AMOVBZ 238 AMOVH 239 AMOVHBR 240 AMOVHZ 241 AMOVW 242 AMOVWZ 243 AMOVD 244 AMOVDBR 245 246 // conditional moves 247 AMOVDEQ 248 AMOVDGE 249 AMOVDGT 250 AMOVDLE 251 AMOVDLT 252 AMOVDNE 253 254 // find leftmost one 255 AFLOGR 256 257 // integer bitwise 258 AAND 259 AANDW 260 AOR 261 AORW 262 AXOR 263 AXORW 264 ASLW 265 ASLD 266 ASRW 267 ASRAW 268 ASRD 269 ASRAD 270 ARLL 271 ARLLG 272 273 // floating point 274 AFABS 275 AFADD 276 AFADDS 277 AFCMPO 278 AFCMPU 279 ACEBR 280 AFDIV 281 AFDIVS 282 AFMADD 283 AFMADDS 284 AFMOVD 285 AFMOVS 286 AFMSUB 287 AFMSUBS 288 AFMUL 289 AFMULS 290 AFNABS 291 AFNEG 292 AFNEGS 293 ALEDBR 294 ALDEBR 295 AFSUB 296 AFSUBS 297 AFSQRT 298 AFSQRTS 299 AFIEBR 300 AFIDBR 301 302 // convert from int32/int64 to float/float64 303 ACEFBRA 304 ACDFBRA 305 ACEGBRA 306 ACDGBRA 307 308 // convert from float/float64 to int32/int64 309 ACFEBRA 310 ACFDBRA 311 ACGEBRA 312 ACGDBRA 313 314 // convert from uint32/uint64 to float/float64 315 ACELFBR 316 ACDLFBR 317 ACELGBR 318 ACDLGBR 319 320 // convert from float/float64 to uint32/uint64 321 ACLFEBR 322 ACLFDBR 323 ACLGEBR 324 ACLGDBR 325 326 // compare 327 ACMP 328 ACMPU 329 ACMPW 330 ACMPWU 331 332 // compare and swap 333 ACS 334 ACSG 335 336 // serialize 337 ASYNC 338 339 // branch 340 ABC 341 ABCL 342 ABEQ 343 ABGE 344 ABGT 345 ABLE 346 ABLT 347 ABLEU 348 ABLTU 349 ABNE 350 ABVC 351 ABVS 352 ASYSCALL 353 354 // compare and branch 355 ACMPBEQ 356 ACMPBGE 357 ACMPBGT 358 ACMPBLE 359 ACMPBLT 360 ACMPBNE 361 ACMPUBEQ 362 ACMPUBGE 363 ACMPUBGT 364 ACMPUBLE 365 ACMPUBLT 366 ACMPUBNE 367 368 // storage-and-storage 369 AMVC 370 ACLC 371 AXC 372 AOC 373 ANC 374 375 // load 376 AEXRL 377 ALARL 378 ALA 379 ALAY 380 381 // interlocked load and op 382 ALAA 383 ALAAG 384 ALAAL 385 ALAALG 386 ALAN 387 ALANG 388 ALAX 389 ALAXG 390 ALAO 391 ALAOG 392 393 // load/store multiple 394 ALMY 395 ALMG 396 ASTMY 397 ASTMG 398 399 // store clock 400 ASTCK 401 ASTCKC 402 ASTCKE 403 ASTCKF 404 405 // macros 406 ACLEAR 407 408 // vector 409 AVA 410 AVAB 411 AVAH 412 AVAF 413 AVAG 414 AVAQ 415 AVACC 416 AVACCB 417 AVACCH 418 AVACCF 419 AVACCG 420 AVACCQ 421 AVAC 422 AVACQ 423 AVACCC 424 AVACCCQ 425 AVN 426 AVNC 427 AVAVG 428 AVAVGB 429 AVAVGH 430 AVAVGF 431 AVAVGG 432 AVAVGL 433 AVAVGLB 434 AVAVGLH 435 AVAVGLF 436 AVAVGLG 437 AVCKSM 438 AVCEQ 439 AVCEQB 440 AVCEQH 441 AVCEQF 442 AVCEQG 443 AVCEQBS 444 AVCEQHS 445 AVCEQFS 446 AVCEQGS 447 AVCH 448 AVCHB 449 AVCHH 450 AVCHF 451 AVCHG 452 AVCHBS 453 AVCHHS 454 AVCHFS 455 AVCHGS 456 AVCHL 457 AVCHLB 458 AVCHLH 459 AVCHLF 460 AVCHLG 461 AVCHLBS 462 AVCHLHS 463 AVCHLFS 464 AVCHLGS 465 AVCLZ 466 AVCLZB 467 AVCLZH 468 AVCLZF 469 AVCLZG 470 AVCTZ 471 AVCTZB 472 AVCTZH 473 AVCTZF 474 AVCTZG 475 AVEC 476 AVECB 477 AVECH 478 AVECF 479 AVECG 480 AVECL 481 AVECLB 482 AVECLH 483 AVECLF 484 AVECLG 485 AVERIM 486 AVERIMB 487 AVERIMH 488 AVERIMF 489 AVERIMG 490 AVERLL 491 AVERLLB 492 AVERLLH 493 AVERLLF 494 AVERLLG 495 AVERLLV 496 AVERLLVB 497 AVERLLVH 498 AVERLLVF 499 AVERLLVG 500 AVESLV 501 AVESLVB 502 AVESLVH 503 AVESLVF 504 AVESLVG 505 AVESL 506 AVESLB 507 AVESLH 508 AVESLF 509 AVESLG 510 AVESRA 511 AVESRAB 512 AVESRAH 513 AVESRAF 514 AVESRAG 515 AVESRAV 516 AVESRAVB 517 AVESRAVH 518 AVESRAVF 519 AVESRAVG 520 AVESRL 521 AVESRLB 522 AVESRLH 523 AVESRLF 524 AVESRLG 525 AVESRLV 526 AVESRLVB 527 AVESRLVH 528 AVESRLVF 529 AVESRLVG 530 AVX 531 AVFAE 532 AVFAEB 533 AVFAEH 534 AVFAEF 535 AVFAEBS 536 AVFAEHS 537 AVFAEFS 538 AVFAEZB 539 AVFAEZH 540 AVFAEZF 541 AVFAEZBS 542 AVFAEZHS 543 AVFAEZFS 544 AVFEE 545 AVFEEB 546 AVFEEH 547 AVFEEF 548 AVFEEBS 549 AVFEEHS 550 AVFEEFS 551 AVFEEZB 552 AVFEEZH 553 AVFEEZF 554 AVFEEZBS 555 AVFEEZHS 556 AVFEEZFS 557 AVFENE 558 AVFENEB 559 AVFENEH 560 AVFENEF 561 AVFENEBS 562 AVFENEHS 563 AVFENEFS 564 AVFENEZB 565 AVFENEZH 566 AVFENEZF 567 AVFENEZBS 568 AVFENEZHS 569 AVFENEZFS 570 AVFA 571 AVFADB 572 AWFADB 573 AWFK 574 AWFKDB 575 AVFCE 576 AVFCEDB 577 AVFCEDBS 578 AWFCEDB 579 AWFCEDBS 580 AVFCH 581 AVFCHDB 582 AVFCHDBS 583 AWFCHDB 584 AWFCHDBS 585 AVFCHE 586 AVFCHEDB 587 AVFCHEDBS 588 AWFCHEDB 589 AWFCHEDBS 590 AWFC 591 AWFCDB 592 AVCDG 593 AVCDGB 594 AWCDGB 595 AVCDLG 596 AVCDLGB 597 AWCDLGB 598 AVCGD 599 AVCGDB 600 AWCGDB 601 AVCLGD 602 AVCLGDB 603 AWCLGDB 604 AVFD 605 AVFDDB 606 AWFDDB 607 AVLDE 608 AVLDEB 609 AWLDEB 610 AVLED 611 AVLEDB 612 AWLEDB 613 AVFM 614 AVFMDB 615 AWFMDB 616 AVFMA 617 AVFMADB 618 AWFMADB 619 AVFMS 620 AVFMSDB 621 AWFMSDB 622 AVFPSO 623 AVFPSODB 624 AWFPSODB 625 AVFLCDB 626 AWFLCDB 627 AVFLNDB 628 AWFLNDB 629 AVFLPDB 630 AWFLPDB 631 AVFSQ 632 AVFSQDB 633 AWFSQDB 634 AVFS 635 AVFSDB 636 AWFSDB 637 AVFTCI 638 AVFTCIDB 639 AWFTCIDB 640 AVGFM 641 AVGFMB 642 AVGFMH 643 AVGFMF 644 AVGFMG 645 AVGFMA 646 AVGFMAB 647 AVGFMAH 648 AVGFMAF 649 AVGFMAG 650 AVGEF 651 AVGEG 652 AVGBM 653 AVZERO 654 AVONE 655 AVGM 656 AVGMB 657 AVGMH 658 AVGMF 659 AVGMG 660 AVISTR 661 AVISTRB 662 AVISTRH 663 AVISTRF 664 AVISTRBS 665 AVISTRHS 666 AVISTRFS 667 AVL 668 AVLR 669 AVLREP 670 AVLREPB 671 AVLREPH 672 AVLREPF 673 AVLREPG 674 AVLC 675 AVLCB 676 AVLCH 677 AVLCF 678 AVLCG 679 AVLEH 680 AVLEF 681 AVLEG 682 AVLEB 683 AVLEIH 684 AVLEIF 685 AVLEIG 686 AVLEIB 687 AVFI 688 AVFIDB 689 AWFIDB 690 AVLGV 691 AVLGVB 692 AVLGVH 693 AVLGVF 694 AVLGVG 695 AVLLEZ 696 AVLLEZB 697 AVLLEZH 698 AVLLEZF 699 AVLLEZG 700 AVLM 701 AVLP 702 AVLPB 703 AVLPH 704 AVLPF 705 AVLPG 706 AVLBB 707 AVLVG 708 AVLVGB 709 AVLVGH 710 AVLVGF 711 AVLVGG 712 AVLVGP 713 AVLL 714 AVMX 715 AVMXB 716 AVMXH 717 AVMXF 718 AVMXG 719 AVMXL 720 AVMXLB 721 AVMXLH 722 AVMXLF 723 AVMXLG 724 AVMRH 725 AVMRHB 726 AVMRHH 727 AVMRHF 728 AVMRHG 729 AVMRL 730 AVMRLB 731 AVMRLH 732 AVMRLF 733 AVMRLG 734 AVMN 735 AVMNB 736 AVMNH 737 AVMNF 738 AVMNG 739 AVMNL 740 AVMNLB 741 AVMNLH 742 AVMNLF 743 AVMNLG 744 AVMAE 745 AVMAEB 746 AVMAEH 747 AVMAEF 748 AVMAH 749 AVMAHB 750 AVMAHH 751 AVMAHF 752 AVMALE 753 AVMALEB 754 AVMALEH 755 AVMALEF 756 AVMALH 757 AVMALHB 758 AVMALHH 759 AVMALHF 760 AVMALO 761 AVMALOB 762 AVMALOH 763 AVMALOF 764 AVMAL 765 AVMALB 766 AVMALHW 767 AVMALF 768 AVMAO 769 AVMAOB 770 AVMAOH 771 AVMAOF 772 AVME 773 AVMEB 774 AVMEH 775 AVMEF 776 AVMH 777 AVMHB 778 AVMHH 779 AVMHF 780 AVMLE 781 AVMLEB 782 AVMLEH 783 AVMLEF 784 AVMLH 785 AVMLHB 786 AVMLHH 787 AVMLHF 788 AVMLO 789 AVMLOB 790 AVMLOH 791 AVMLOF 792 AVML 793 AVMLB 794 AVMLHW 795 AVMLF 796 AVMO 797 AVMOB 798 AVMOH 799 AVMOF 800 AVNO 801 AVNOT 802 AVO 803 AVPK 804 AVPKH 805 AVPKF 806 AVPKG 807 AVPKLS 808 AVPKLSH 809 AVPKLSF 810 AVPKLSG 811 AVPKLSHS 812 AVPKLSFS 813 AVPKLSGS 814 AVPKS 815 AVPKSH 816 AVPKSF 817 AVPKSG 818 AVPKSHS 819 AVPKSFS 820 AVPKSGS 821 AVPERM 822 AVPDI 823 AVPOPCT 824 AVREP 825 AVREPB 826 AVREPH 827 AVREPF 828 AVREPG 829 AVREPI 830 AVREPIB 831 AVREPIH 832 AVREPIF 833 AVREPIG 834 AVSCEF 835 AVSCEG 836 AVSEL 837 AVSL 838 AVSLB 839 AVSLDB 840 AVSRA 841 AVSRAB 842 AVSRL 843 AVSRLB 844 AVSEG 845 AVSEGB 846 AVSEGH 847 AVSEGF 848 AVST 849 AVSTEH 850 AVSTEF 851 AVSTEG 852 AVSTEB 853 AVSTM 854 AVSTL 855 AVSTRC 856 AVSTRCB 857 AVSTRCH 858 AVSTRCF 859 AVSTRCBS 860 AVSTRCHS 861 AVSTRCFS 862 AVSTRCZB 863 AVSTRCZH 864 AVSTRCZF 865 AVSTRCZBS 866 AVSTRCZHS 867 AVSTRCZFS 868 AVS 869 AVSB 870 AVSH 871 AVSF 872 AVSG 873 AVSQ 874 AVSCBI 875 AVSCBIB 876 AVSCBIH 877 AVSCBIF 878 AVSCBIG 879 AVSCBIQ 880 AVSBCBI 881 AVSBCBIQ 882 AVSBI 883 AVSBIQ 884 AVSUMG 885 AVSUMGH 886 AVSUMGF 887 AVSUMQ 888 AVSUMQF 889 AVSUMQG 890 AVSUM 891 AVSUMB 892 AVSUMH 893 AVTM 894 AVUPH 895 AVUPHB 896 AVUPHH 897 AVUPHF 898 AVUPLH 899 AVUPLHB 900 AVUPLHH 901 AVUPLHF 902 AVUPLL 903 AVUPLLB 904 AVUPLLH 905 AVUPLLF 906 AVUPL 907 AVUPLB 908 AVUPLHW 909 AVUPLF 910 911 // binary 912 ABYTE 913 AWORD 914 ADWORD 915 916 // end marker 917 ALAST 918 919 // aliases 920 ABR = obj.AJMP 921 ABL = obj.ACALL 922 )