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