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