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