Path: utzoo!yunexus!geac!syntron!jtsv16!uunet!mcvax!enea!kth!draken!bmc1!kuling!ewerlid From: ewerlid@kuling.UUCP (Ove Ewerlid) Newsgroups: comp.sys.nsc.32k Subject: Re: Where is everyone??? Keywords: GAS, architecture, ns32k Message-ID: <877@kuling.UUCP> Date: 20 Oct 88 07:50:21 GMT Article-I.D.: kuling.877 References: <2582@sultra.UUCP> Reply-To: ewerlid@kuling.UUCP (Ove Ewerlid) Organization: Dept. of Computer Systems, Uppsala University, Sweden Lines: 72 In article <2582@sultra.UUCP> dtynan@sultra.UUCP (Der Tynan) writes: >You know, USENET stuff!! For one thing, the GNU C compiler has machine >definitions for the 32K, but GAS doesn't. Is anyone working on this?? If you read the article I submited some 5 (I guess) weeks ago you would have realised that someone is working on a ns32k-gas-port. This port is ready and running for my own ns32k system. The main problem is the linker. This problem is due to the huffman-size-tags used on displacements. If one uses positive styled offsets from segments those tags can be handled directly. One must ofcourse also make sure that only 4byte displacements are used (This is the normal case). With 'directly' I mean that one could adopt the linker to recognice tagged displacements from immediates. The linker must be explicitly told it is linking ns32k-code. Also note that the ns32k uses different endian styles in instruction operands (immediates and displacements) and in direct memory accesses. I guess the designer of the ns32k choosed the style in displacements due to the huffman tags (the immediates followed for generallity). The memory access style because it is most logical to have the lsb's at a lower address. (Yes I know, the endian concept is more religion than logic, but still ....) In the current gnu-linker negative offsets are used. One realizes that tagged displacements can't be used if 2's complement notation is utilized. Add 1 to 0xffffffff and you get 0, not 0xc0000000. Also subtract 1 from 0xc0000000 and you get 0xbfffffff not 0xffffffff. 2's complement must be used as segment A may be placed over or under segment B. If segment A has external references to B, 2's complement is a must if you want to target references from A to B in both cases. The problem can be solved in either case but one of the cases yields a better solution. If someone can prove that the above thesis is wrong, thats fine, as we don't have to bother about it than :-). More religion: The ns32k has the cleanest architecture of the common 32-bitters. Apart from the fact that assemblers and compiler specifications for the ns32k tends to get smaller it also has the right feel. For instance the m68k concept has mutaded beyond all grace as the instruction set and addressingmodes are a big specialcase. I guess the persons who uppgraded the 68000 to 68020 to 68030 were rather unhappy with the inhomogen architecure. A lot of ours wasted on specialcases or..... I don't want to talk about the i386. Guess the backward compatibillity of some CPU's are rather important!?!?!?! The ns32k has some missfeatures though. For instance, the offsets of the displacements are not from the displacement it self, it is taken from the begining of the instruction. Still this is nothing the programmer has to think about unless he/she attempts to write an assembler/dissassembler. Also the ns32k uses fields in the opcodes to encode operand argumnets that may be forward references. Still nothing the programmer has to think about. The instructions that uses this is a must since the ns32k doesn't have auto increment/decrement addressingmodes. The lack of those modes is in it self a bug. My experience with the hardware is similar the ns32k guys did a good job here to. There was some bugs in the first generation. What I mean hear is the overall feel of the chipsinterface to its suroundings. Conclusion: I don't think any one that has knowledge about the major 32-bitters will deny that the ns32k is the most well thought-out design. Ns32k is simply the cpu one chooses if there are no other constrains. Such as backward compatibillity of systems, second sources, what cpu is in the existing design, what cpu do I know best, price, real-time-constrains, speed, software, religion etc etc After all, it is the one that sells most that is winning or....