Re: [Factor-talk] Any way of making sense of what's in the boot image?

2012-08-17 Thread Michael Clagett

: pic-tail-reg ( -- reg ) EDX ;
//stack pointer // ?: stack-reg ( -- reg ) ESP ;
// stack frame pointer: frame-reg ( -- reg ) EBP ;
// virtual machine object base: vm-reg ( -- reg ) EBX ;
: ctx-reg ( -- reg ) EBP ;
// non-volatile registers  -- these would be registers needing to be preserved 
(and that callers can count on being preserved)?: nv-regs ( -- seq ) { ESI EDI 
EBX } ;
// volatile registers -- these would be registers one is free to use (and that 
callers cannot count on being preserved)?: volatile-regs ( -- seq ) { EAX ECX 
EDX } ;
// ?: nv-reg ( -- reg ) ESI ;
// ?: ds-reg ( -- reg ) ESI ;
// ?: rs-reg ( -- reg ) EDI ;
// ?: link-reg ( -- reg ) EBX ; Would anybody be able to validate 
assumptions articulated above and fill in missing pieces.  This is good 
foundational knowledge to operate in general with.
 From: mclag...@hotmail.com
Date: Thu, 16 Aug 2012 13:15:48 -0400
To: factor-talk@lists.sourceforge.net
Subject: Re: [Factor-talk] Any way of making sense of what's in the boot
image?

Great, thanks.

Sent from my iPhone
On Aug 16, 2012, at 1:11 PM, John Benediktsson mrj...@gmail.com wrote:

 So then, John, does that mean that in the [ 4 slot { array} declare ], that 
I'm getting the slot named array which is at offset 4 (and then declaring 
that to be an array, so as to disable some of the type safety checks)?   


Yes, the hashtable code is written at a bit lower level and thus maybe a little 
harder to read than one might normally write in Factor since it is one of the 
building blocks that everything is built upon.  It is also possible that some 
of the compiler optimizations that have been written in the last couple of 
years make some of those declarations unnecessary, although I'd have to look 
into it more to know for sure.


Also, due to the bootstrapping mechanism, some of the higher level language 
constructs like locals and fry quotations are not available yet.  That is 
something we hope to fix at some future point.

 Here it says slot takes two incoming values:  an obj and a non-negative 
fixnum, which is the nth slot.   In the hashtable slot-specs you list below 
there are only three slots listed, but it does say that the slot named array 
is at offset 4.   Is it this offset number that is being specified by the m 
parameter?  And thus is the array I am seeing in my original description the 
contents of the array slot of the hashtable that was originally on the stack? 
  That makes sense to me.   And the fact that the array is 128 slots long 
(allowing flattened representation of 64 key-value pairs) just means that the 
underlying array in the hashtable has 64 buckets.  Is this a correct 
interpretation.  If it is, it makes sense that the actual 26 values stored in 
the hash table would be dispersed throught the 64 buckets, because this is what 
a hashtable does.


Yes, exactly!  The slot-spec tuple provides a generic description of what is 
to be found in this case at offset 4.  

Best,

John.
--
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. 
http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/___
Factor-talk mailing list
Factor-talk@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/factor-talk

--

Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
___
Factor-talk mailing list
Factor-talk@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/factor-talk
--
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
___
Factor-talk mailing list
Factor-talk@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/factor-talk
  --
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include 

Re: [Factor-talk] Any way of making sense of what's in the boot image?

2012-08-17 Thread Michael Clagett

A few more: // ?: shift-arg ( -- reg ) ECX ;
// ?: div-arg ( -- reg ) EAX ;
// ?: mod-arg ( -- reg ) EDX ;
 From: mclag...@hotmail.com
To: factor-talk@lists.sourceforge.net
Date: Fri, 17 Aug 2012 14:03:30 +
Subject: Re: [Factor-talk] Any way of making sense of what's in the boot image?





// ?
: pic-tail-reg ( -- reg ) EDX ;


// stack pointer
: stack-reg ( -- reg ) ESP ;


// stack frame pointer
: frame-reg ( -- reg ) EBP ;


// virtual machine object base
: vm-reg ( -- reg ) EBX ;


: ctx-reg ( -- reg ) EBP ;


// non-volatile registers  -- these would be registers needing to be preserved 
(and that callers can count on being preserved)?
: nv-regs ( -- seq ) { ESI EDI EBX } ;


// volatile registers -- these would be registers one is free to use (and that 
callers cannot count on being preserved)?
: volatile-regs ( -- seq ) { EAX ECX EDX } ;


// ?
: nv-reg ( -- reg ) ESI ;


// ?
: ds-reg ( -- reg ) ESI ;


// ?
: rs-reg ( -- reg ) EDI ;


// ?
: link-reg ( -- reg ) EBX ;
 
Would anybody be able to validate assumptions articulated above and fill in 
missing pieces.  This is good foundational knowledge to operate in general with.
 
From: mclag...@hotmail.com
Date: Thu, 16 Aug 2012 13:15:48 -0400
To: factor-talk@lists.sourceforge.net
Subject: Re: [Factor-talk] Any way of making sense of what's in the boot
image?

Great, thanks.

Sent from my iPhone
On Aug 16, 2012, at 1:11 PM, John Benediktsson mrj...@gmail.com wrote:

 So then, John, does that mean that in the [ 4 slot { array} declare ], that 
I'm getting the slot named array which is at offset 4 (and then declaring 
that to be an array, so as to disable some of the type safety checks)?   


Yes, the hashtable code is written at a bit lower level and thus maybe a little 
harder to read than one might normally write in Factor since it is one of the 
building blocks that everything is built upon.  It is also possible that some 
of the compiler optimizations that have been written in the last couple of 
years make some of those declarations unnecessary, although I'd have to look 
into it more to know for sure.


Also, due to the bootstrapping mechanism, some of the higher level language 
constructs like locals and fry quotations are not available yet.  That is 
something we hope to fix at some future point.

 Here it says slot takes two incoming values:  an obj and a non-negative 
fixnum, which is the nth slot.   In the hashtable slot-specs you list below 
there are only three slots listed, but it does say that the slot named array 
is at offset 4.   Is it this offset number that is being specified by the m 
parameter?  And thus is the array I am seeing in my original description the 
contents of the array slot of the hashtable that was originally on the stack? 
  That makes sense to me.   And the fact that the array is 128 slots long 
(allowing flattened representation of 64 key-value pairs) just means that the 
underlying array in the hashtable has 64 buckets.  Is this a correct 
interpretation.  If it is, it makes sense that the actual 26 values stored in 
the hash table would be dispersed throught the 64 buckets, because this is what 
a hashtable does.


Yes, exactly!  The slot-spec tuple provides a generic description of what is 
to be found in this case at offset 4.  

Best,

John.
--
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. 
http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/___
Factor-talk mailing list
Factor-talk@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/factor-talk

--

Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
___
Factor-talk mailing list
Factor-talk@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/factor-talk
--
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
___
Factor-talk mailing list
Factor-talk@lists.sourceforge.net

Re: [Factor-talk] Any way of making sense of what's in the boot image?

2012-08-17 Thread Alexander J. Vondrak
pic-tail-reg = polymorphic inline cache tail call register

ds-reg = data stack register

rs-reg = retain stack register

nv-reg: might help to see 
https://github.com/slavapestov/factor/blob/master/basis/cpu/x86/bootstrap.factor#L14

link-reg: only place it seems to be used is 
https://github.com/slavapestov/factor/blob/master/basis/cpu/x86/bootstrap.factor#L49

shift-arg, div-arg, mod-arg: seem to be used in x86 bootstrapping for holding 
arithmetic arguments; e.g., 
https://github.com/slavapestov/factor/blob/master/basis/cpu/x86/bootstrap.factor#L561

That's as much as I can gather from a glance,
--Alex Vondrak


From: Michael Clagett [mclag...@hotmail.com]
Sent: Friday, August 17, 2012 7:08 AM
To: Factor-Talk
Subject: Re: [Factor-talk] Any way of making sense of what's in the boot image?

A few more:

// ?
: shift-arg ( -- reg ) ECX ;

// ?
: div-arg ( -- reg ) EAX ;

// ?
: mod-arg ( -- reg ) EDX ;



From: mclag...@hotmail.com
To: factor-talk@lists.sourceforge.net
Date: Fri, 17 Aug 2012 14:03:30 +
Subject: Re: [Factor-talk] Any way of making sense of what's in the boot image?

// ?
: pic-tail-reg ( -- reg ) EDX ;

// stack pointer
: stack-reg ( -- reg ) ESP ;

// stack frame pointer
: frame-reg ( -- reg ) EBP ;

// virtual machine object base
: vm-reg ( -- reg ) EBX ;

: ctx-reg ( -- reg ) EBP ;

// non-volatile registers  -- these would be registers needing to be preserved 
(and that callers can count on being preserved)?
: nv-regs ( -- seq ) { ESI EDI EBX } ;

// volatile registers -- these would be registers one is free to use (and that 
callers cannot count on being preserved)?
: volatile-regs ( -- seq ) { EAX ECX EDX } ;

// ?
: nv-reg ( -- reg ) ESI ;

// ?
: ds-reg ( -- reg ) ESI ;

// ?
: rs-reg ( -- reg ) EDI ;

// ?
: link-reg ( -- reg ) EBX ;

Would anybody be able to validate assumptions articulated above and fill in 
missing pieces.  This is good foundational knowledge to operate in general with.


From: mclag...@hotmail.com
Date: Thu, 16 Aug 2012 13:15:48 -0400
To: factor-talk@lists.sourceforge.net
Subject: Re: [Factor-talk] Any way of making sense of what's in the boot image?

Great, thanks.

Sent from my iPhone

On Aug 16, 2012, at 1:11 PM, John Benediktsson 
mrj...@gmail.commailto:mrj...@gmail.com wrote:


So then, John, does that mean that in the [ 4 slot { array} declare ], that I'm 
getting the slot named array which is at offset 4 (and then declaring that to 
be an array, so as to disable some of the type safety checks)?

Yes, the hashtable code is written at a bit lower level and thus maybe a little 
harder to read than one might normally write in Factor since it is one of the 
building blocks that everything is built upon.  It is also possible that some 
of the compiler optimizations that have been written in the last couple of 
years make some of those declarations unnecessary, although I'd have to look 
into it more to know for sure.

Also, due to the bootstrapping mechanism, some of the higher level language 
constructs like locals and fry quotations are not available yet.  That is 
something we hope to fix at some future point.

Here it says slot takes two incoming values:  an obj and a non-negative fixnum, 
which is the nth slot.   In the hashtable slot-specs you list below there are 
only three slots listed, but it does say that the slot named array is at 
offset 4.   Is it this offset number that is being specified by the m 
parameter?  And thus is the array I am seeing in my original description the 
contents of the array slot of the hashtable that was originally on the stack? 
  That makes sense to me.   And the fact that the array is 128 slots long 
(allowing flattened representation of 64 key-value pairs) just means that the 
underlying array in the hashtable has 64 buckets.  Is this a correct 
interpretation.  If it is, it makes sense that the actual 26 values stored in 
the hash table would be dispersed throught the 64 buckets, because this is what 
a hashtable does.

Yes, exactly!  The slot-spec tuple provides a generic description of what is 
to be found in this case at offset 4.


Best,
John.
--
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and
threat landscape has changed and how IT managers can respond. Discussions
will include endpoint security, mobile security and the latest in malware
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
___
Factor-talk mailing list
Factor-talk@lists.sourceforge.netmailto:Factor-talk@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/factor-talk

-- 
Live Security Virtual Conference Exclusive live event will cover 

Re: [Factor-talk] Any way of making sense of what's in the boot image?

2012-08-17 Thread Michael Clagett

Thank you Alex.  Seeing the polymorphic inline caching reference makes me 
realize that I really need to go back and reread Slava's (et. al) various blogs 
that have been produced through the years.  I read them all once, but that was 
a couple years ago -- not knowing what I know now.   This should help me not 
revisit ground in this forum that has already been documented elsewhere.   A 
bit more patience, everybody please, while I work out an effective (and 
self-sufficient) internals exploration strategy.
  From: ajvond...@csupomona.edu
 To: factor-talk@lists.sourceforge.net
 Date: Fri, 17 Aug 2012 08:46:46 -0700
 Subject: Re: [Factor-talk] Any way of making sense of what's in the boot 
 image?
 
 pic-tail-reg = polymorphic inline cache tail call register
 
 ds-reg = data stack register
 
 rs-reg = retain stack register
 
 nv-reg: might help to see 
 https://github.com/slavapestov/factor/blob/master/basis/cpu/x86/bootstrap.factor#L14
 
 link-reg: only place it seems to be used is 
 https://github.com/slavapestov/factor/blob/master/basis/cpu/x86/bootstrap.factor#L49
 
 shift-arg, div-arg, mod-arg: seem to be used in x86 bootstrapping for holding 
 arithmetic arguments; e.g., 
 https://github.com/slavapestov/factor/blob/master/basis/cpu/x86/bootstrap.factor#L561
 
 That's as much as I can gather from a glance,
 --Alex Vondrak
 
 
 From: Michael Clagett [mclag...@hotmail.com]
 Sent: Friday, August 17, 2012 7:08 AM
 To: Factor-Talk
 Subject: Re: [Factor-talk] Any way of making sense of what's in the boot 
 image?
 
 A few more:
 
 // ?
 : shift-arg ( -- reg ) ECX ;
 
 // ?
 : div-arg ( -- reg ) EAX ;
 
 // ?
 : mod-arg ( -- reg ) EDX ;
 
 
 
 From: mclag...@hotmail.com
 To: factor-talk@lists.sourceforge.net
 Date: Fri, 17 Aug 2012 14:03:30 +
 Subject: Re: [Factor-talk] Any way of making sense of what's in the boot 
 image?
 
 // ?
 : pic-tail-reg ( -- reg ) EDX ;
 
 // stack pointer
 : stack-reg ( -- reg ) ESP ;
 
 // stack frame pointer
 : frame-reg ( -- reg ) EBP ;
 
 // virtual machine object base
 : vm-reg ( -- reg ) EBX ;
 
 : ctx-reg ( -- reg ) EBP ;
 
 // non-volatile registers  -- these would be registers needing to be 
 preserved (and that callers can count on being preserved)?
 : nv-regs ( -- seq ) { ESI EDI EBX } ;
 
 // volatile registers -- these would be registers one is free to use (and 
 that callers cannot count on being preserved)?
 : volatile-regs ( -- seq ) { EAX ECX EDX } ;
 
 // ?
 : nv-reg ( -- reg ) ESI ;
 
 // ?
 : ds-reg ( -- reg ) ESI ;
 
 // ?
 : rs-reg ( -- reg ) EDI ;
 
 // ?
 : link-reg ( -- reg ) EBX ;
 
 Would anybody be able to validate assumptions articulated above and fill in 
 missing pieces.  This is good foundational knowledge to operate in general 
 with.
 
 
 From: mclag...@hotmail.com
 Date: Thu, 16 Aug 2012 13:15:48 -0400
 To: factor-talk@lists.sourceforge.net
 Subject: Re: [Factor-talk] Any way of making sense of what's in the boot 
 image?
 
 Great, thanks.
 
 Sent from my iPhone
 
 On Aug 16, 2012, at 1:11 PM, John Benediktsson 
 mrj...@gmail.commailto:mrj...@gmail.com wrote:
 
 
 So then, John, does that mean that in the [ 4 slot { array} declare ], that 
 I'm getting the slot named array which is at offset 4 (and then declaring 
 that to be an array, so as to disable some of the type safety checks)?
 
 Yes, the hashtable code is written at a bit lower level and thus maybe a 
 little harder to read than one might normally write in Factor since it is one 
 of the building blocks that everything is built upon.  It is also possible 
 that some of the compiler optimizations that have been written in the last 
 couple of years make some of those declarations unnecessary, although I'd 
 have to look into it more to know for sure.
 
 Also, due to the bootstrapping mechanism, some of the higher level language 
 constructs like locals and fry quotations are not available yet.  That is 
 something we hope to fix at some future point.
 
 Here it says slot takes two incoming values:  an obj and a non-negative 
 fixnum, which is the nth slot.   In the hashtable slot-specs you list below 
 there are only three slots listed, but it does say that the slot named 
 array is at offset 4.   Is it this offset number that is being specified by 
 the m parameter?  And thus is the array I am seeing in my original 
 description the contents of the array slot of the hashtable that was 
 originally on the stack?   That makes sense to me.   And the fact that the 
 array is 128 slots long (allowing flattened representation of 64 key-value 
 pairs) just means that the underlying array in the hashtable has 64 buckets.  
 Is this a correct interpretation.  If it is, it makes sense that the actual 
 26 values stored in the hash table would be dispersed throught the 64 
 buckets, because this is what a hashtable does.
 
 Yes, exactly!  The slot-spec tuple 

Re: [Factor-talk] Any way of making sense of what's in the boot image?

2012-08-16 Thread Michael Clagett

Hi -- Okay.  I'm going to ask for my first lifeline. :)  I'm tracing through 
some arcane stuff indeed.  Everything is going along swimmingly.  I get to the 
word new-key@, which at its start wants to execute [ array 2dup hash@ 0 f 
(new-key@) ] with the keep combinator.  All good so far.  array resolves 
to [ 4 slot { array } declare ], which I believe should mean get the 4th slot 
of the object on top of stack and declare to Factor that you know for sure it 
is an array.  The object on the top of the stack, according to the Inspector, 
is a 26-slot hash table that includes such keys as architecture, auto-use?, 
bootstrap-syntax, bootsrapping?, etc. Now comes the part that baffles me.  
When I get to executing slot (whether I try to step past it or descend into 
it), the Walker simply moves me all the way to the end of the qotation (past 
declare) and I see the hash-table and index from the top of the data stack 
replaced with a 128-element array that has the 26 key-value pairs from the 
former hash table spread out through the array interspersed by tombstone 
objects; each of these key-value pairs that appear occupy two adjacent array 
slots.  But I'm completely mystified as to how the contents of the hash-table 
got mapped to the array slots they now occupy (there doesn't seem to be any 
rhyme or reason).  And I have little insight into the code that accomplished 
this.  Moreover I apparently can't see the 4th slot of the original object in 
the Inspector, as it only shows me three slots on the data stack trace, but 
organizes them alphabetically when I double-click to open the Inspector window. 
Don't know if any of this was intelligble.  But maybe one of you compiler guys 
can give me a clue as to how I can understand this.  I'm having to reverse 
engineer my understanding of all of this, so a break in the logical chain 
presents difficulties.Sorry for the long post. Regards, Mike
  Date: Wed, 15 Aug 2012 08:30:10 -0700
 From: doug.cole...@gmail.com
 To: factor-talk@lists.sourceforge.net
 Subject: Re: [Factor-talk] Any way of making sense of what's in the boot  
 image?
 
 1) Factor loads a ~/.factor-rc file every time it starts. You can put
 things there:
 
 USE: tools.scaffold
 scaffold-factor-rc
 
 Click it, edit it and add:
 
 USING: prettyprint.config namespaces ;
 16 number-base set-global
 
 
 
 2) Alternately, there's a boot rc file that gets loaded after bootstrap:
 
 USE: tools.scaffold
 scaffold-factor-boot-rc
 
 Click it, edit it and add:
 
 USING: prettyprint.config namespaces ;
 16 number-base set-global
 
 To load it without bootstrapping, call 'run-bootstrap-init' and then
 'save' your image.
 
 
 Doug
 
 
 On Wed, Aug 15, 2012 at 8:22 AM, Michael Clagett mclag...@hotmail.com wrote:
  Thanks.  I knew it had to be something like that.  And if I want it to be
  the default every time I load the Listener, I'm sure there must be a way to
  set that up?
 
  Sent from my iPhone
 
  On Aug 15, 2012, at 11:01 AM, John Benediktsson mrj...@gmail.com wrote:
 
  If you want all numbers to print in hex, the easiest way is:
 
  ```
  IN: scratchpad 16 number-base set-global
  ```
 
 
  On Wed, Aug 15, 2012 at 4:04 AM, Michael Clagett mclag...@hotmail.com
  wrote:
 
  Quick question.   Any way of having the data and retain stack panes of the
  Walker display values in hex?
 
   Date: Mon, 13 Aug 2012 12:21:52 -0400
   From: arc...@gmail.com
   To: factor-talk@lists.sourceforge.net
   Subject: Re: [Factor-talk] Any way of making sense of what's in the boot
   image?
  
   On Mon, Aug 13, 2012 at 11:52 AM, Michael Clagett mclag...@hotmail.com
   wrote:
Here's an obscure question that is of interest to me in my current
quest,
but probably not to anyone else. So if there is a better forum for me
to
ask such things, I would love to be instructed; until I hear
otherwise,
however, I will continue to use this list.
   
Is there any place where I can penetrate the meaning of the following
constants:
   
CONSTANT: rt-dlsym 0
CONSTANT: rt-entry-point 1
CONSTANT: rt-entry-point-pic 2
CONSTANT: rt-entry-point-pic-tail 3
CONSTANT: rt-here 4
CONSTANT: rt-this 5
CONSTANT: rt-literal 6
CONSTANT: rt-untagged 7
CONSTANT: rt-megamorphic-cache-hits 8
CONSTANT: rt-vm 9
CONSTANT: rt-cards-offset 10
CONSTANT: rt-decks-offset 11
CONSTANT: rt-exception-handler 12
CONSTANT: rt-dlsym-toc 13
CONSTANT: rt-inline-cache-miss 14
CONSTANT: rt-safepoint 15
   
So far I've only encountered rt-here and I've only seen it encoded
into a
relocation entry and not really used anywhere yet. But this strikes me
as
the kind of thing it would be useful to know as I am slogging through
this
stuff.
   
Not a hugely pressing question, as I'm sure I'll muddle through it.
But if
anyone has a moment to illuminate, it would be nice.
  
   Those are relocation record types. When the compiler generates code
   

Re: [Factor-talk] Any way of making sense of what's in the boot image?

2012-08-16 Thread John Benediktsson
In the listener, if you run this code:

IN: scratchpad clear
IN: scratchpad value key associate

Then step over to [ set-at ] keep

If at this point you just keep stepping into things, you should do a deep
dive into all the parts, including the 4 slot { array } declare which
should give you something like {
~tombstone~ ~tombstone~ ~tombstone~ ~tombstone~ } (an array full of
tombstone elements which indicate no key or value is present).  A
hashtable with deleted elements will have ~empty~.  A hashtable with
key/value will have { key value } at some point in the array.  The
array is flattened key/value pairs, so a 4 bucket hashtable will have an 8
element array storing key/value side-by-side starting at the even indices.

I'm not sure what the 26-slot hash table is that you are looking at, so I
put a clear in the code above to make sure your data stack is empty before
walking.  It is also possible that you are tracing some code which is
traversing the namespaces (a vector of hashtables containing symbolic
variables used in parts of the code, with names like the ones you mention).

A hashtable has 3 slots (the 0 slot is a numeric value), see:

```
IN: scratchpad \ hashtable slots word-prop .
{
T{ slot-spec
{ name count }
{ offset 2 }
{ class array-capacity }
{ initial 0 }
}
T{ slot-spec
{ name deleted }
{ offset 3 }
{ class array-capacity }
{ initial 0 }
}
T{ slot-spec
{ name array }
{ offset 4 }
{ class array }
{ initial { } }
}
}
```

You might also like to try describe, and poke around at the various word
properties (see props below):

```
IN: scratchpad \ hashtable describe
IN: hashtables SYMBOL: hashtable
hashcode  251442479911733628
name  hashtable
vocabularyhashtables
def   [ \ hashtable ]
props H{ { help-parent hashtables } { slots ~array~ } { ...
pic-def   f
pic-tail-def  f
sub-primitive f
```


On Thu, Aug 16, 2012 at 6:01 AM, Michael Clagett mclag...@hotmail.comwrote:

  Hi --

 Okay.  I'm going to ask for my first lifeline. :)  I'm tracing through
 some arcane stuff indeed.  Everything is going along swimmingly.  I get to
 the word new-key@, which at its start wants to execute [ array 2dup
 hash@ 0 f (new-key@) ] with the keep combinator.  All good so far.
 array resolves to [ 4 slot { array } declare ], which I believe should
 mean get the 4th slot of the object on top of stack and declare to Factor
 that you know for sure it is an array.  The object on the top of the
 stack, according to the Inspector, is a 26-slot hash table that includes
 such keys as architecture, auto-use?, bootstrap-syntax,
 bootsrapping?, etc.

 Now comes the part that baffles me.  When I get to executing slot
 (whether I try to step past it or descend into it), the Walker simply moves
 me all the way to the end of the qotation (past declare) and I see the
 hash-table and index from the top of the data stack replaced with a
 128-element array that has the 26 key-value pairs from the former hash
 table spread out through the array interspersed by tombstone objects; each
 of these key-value pairs that appear occupy two adjacent array slots.  But
 I'm completely mystified as to how the contents of the hash-table got
 mapped to the array slots they now occupy (there doesn't seem to be any
 rhyme or reason).  And I have little insight into the code that
 accomplished this.  Moreover I apparently can't see the 4th slot of the
 original object in the Inspector, as it only shows me three slots on the
 data stack trace, but organizes them alphabetically when I double-click to
 open the Inspector window.

 Don't know if any of this was intelligble.  But maybe one of you compiler
 guys can give me a clue as to how I can understand this.  I'm having to
 reverse engineer my understanding of all of this, so a break in the logical
 chain presents difficulties.
 Sorry for the long post.

 Regards,

 Mike

  Date: Wed, 15 Aug 2012 08:30:10 -0700
  From: doug.cole...@gmail.com

  To: factor-talk@lists.sourceforge.net
  Subject: Re: [Factor-talk] Any way of making sense of what's in the boot
 image?
 
  1) Factor loads a ~/.factor-rc file every time it starts. You can put
  things there:
 
  USE: tools.scaffold
  scaffold-factor-rc
 
  Click it, edit it and add:
 
  USING: prettyprint.config namespaces ;
  16 number-base set-global
 
 
 
  2) Alternately, there's a boot rc file that gets loaded after bootstrap:
 
  USE: tools.scaffold
  scaffold-factor-boot-rc
 
  Click it, edit it and add:
 
  USING: prettyprint.config namespaces ;
  16 number-base set-global
 
  To load it without bootstrapping, call 'run-bootstrap-init' and then
  'save' your image.
 
 
  Doug
 
 
  On Wed, Aug 15, 2012 at 8:22 AM, Michael Clagett mclag...@hotmail.com
 wrote:
   Thanks. I knew it had to be something like that. And if I want it to be
   the default every time I load the Listener, I'm sure there 

Re: [Factor-talk] Any way of making sense of what's in the boot image?

2012-08-16 Thread Michael Clagett

Wow.  Great, John!   Thanks.  This should keep me at bay for a good while.
 From: mrj...@gmail.com
Date: Thu, 16 Aug 2012 08:10:31 -0700
To: factor-talk@lists.sourceforge.net
Subject: Re: [Factor-talk] Any way of making sense of what's in the boot
image?

In the listener, if you run this code:
IN: scratchpad clearIN: scratchpad value key associate
Then step over to [ set-at ] keep


If at this point you just keep stepping into things, you should do a deep 
dive into all the parts, including the 4 slot { array } declare which should 
give you something like { ~tombstone~ ~tombstone~ ~tombstone~ ~tombstone~ } (an 
array full of tombstone elements which indicate no key or value is present).  
A hashtable with deleted elements will have ~empty~.  A hashtable with 
key/value will have { key value } at some point in the array.  The array is 
flattened key/value pairs, so a 4 bucket hashtable will have an 8 element array 
storing key/value side-by-side starting at the even indices.


I'm not sure what the 26-slot hash table is that you are looking at, so I put a 
clear in the code above to make sure your data stack is empty before walking.  
It is also possible that you are tracing some code which is traversing the 
namespaces (a vector of hashtables containing symbolic variables used in parts 
of the code, with names like the ones you mention).


A hashtable has 3 slots (the 0 slot is a numeric value), see:
```IN: scratchpad \ hashtable slots word-prop .{T{ slot-spec

{ name count }{ offset 2 }{ class array-capacity }
{ initial 0 }}T{ slot-spec{ name deleted }

{ offset 3 }{ class array-capacity }{ initial 0 }}  
  T{ slot-spec{ name array }{ offset 4 }

{ class array }{ initial { } }}}```
You might also like to try describe, and poke around at the various word 
properties (see props below):


```IN: scratchpad \ hashtable describeIN: hashtables SYMBOL: hashtablehashcode  
251442479911733628name  hashtablevocabularyhashtables

def   [ \ hashtable ]props H{ { help-parent hashtables } { 
slots ~array~ } { ...pic-def   fpic-tail-def  fsub-primitive f

```

On Thu, Aug 16, 2012 at 6:01 AM, Michael Clagett mclag...@hotmail.com wrote:






Hi --
 
Okay.  I'm going to ask for my first lifeline. :)  I'm tracing through some 
arcane stuff indeed.  Everything is going along swimmingly.  I get to the word 
new-key@, which at its start wants to execute [ array 2dup hash@ 0 f 
(new-key@) ] with the keep combinator.  All good so far.  array resolves 
to [ 4 slot { array } declare ], which I believe should mean get the 4th slot 
of the object on top of stack and declare to Factor that you know for sure it 
is an array.  The object on the top of the stack, according to the Inspector, 
is a 26-slot hash table that includes such keys as architecture, auto-use?, 
bootstrap-syntax, bootsrapping?, etc.


 
Now comes the part that baffles me.  When I get to executing slot (whether I 
try to step past it or descend into it), the Walker simply moves me all the way 
to the end of the qotation (past declare) and I see the hash-table and index 
from the top of the data stack replaced with a 128-element array that has the 
26 key-value pairs from the former hash table spread out through the array 
interspersed by tombstone objects; each of these key-value pairs that appear 
occupy two adjacent array slots.  But I'm completely mystified as to how the 
contents of the hash-table got mapped to the array slots they now occupy (there 
doesn't seem to be any rhyme or reason).  And I have little insight into the 
code that accomplished this.  Moreover I apparently can't see the 4th slot of 
the original object in the Inspector, as it only shows me three slots on the 
data stack trace, but organizes them alphabetically when I double-click to open 
the Inspector window.


 
Don't know if any of this was intelligble.  But maybe one of you compiler guys 
can give me a clue as to how I can understand this.  I'm having to reverse 
engineer my understanding of all of this, so a break in the logical chain 
presents difficulties.


Sorry for the long post.
 
Regards,
 
Mike
 
 Date: Wed, 15 Aug 2012 08:30:10 -0700
 From: doug.cole...@gmail.com


 To: factor-talk@lists.sourceforge.net
 Subject: Re: [Factor-talk] Any way of making sense of what's in the boot  
 image?


 
 1) Factor loads a ~/.factor-rc file every time it starts. You can put
 things there:
 
 USE: tools.scaffold
 scaffold-factor-rc
 
 Click it, edit it and add:
 


 USING: prettyprint.config namespaces ;
 16 number-base set-global
 
 
 
 2) Alternately, there's a boot rc file that gets loaded after bootstrap:
 
 USE: tools.scaffold


 scaffold-factor-boot-rc
 
 Click it, edit it and add:
 
 USING: prettyprint.config namespaces ;
 16 number-base set-global
 
 To load it without bootstrapping, call 'run-bootstrap-init' 

Re: [Factor-talk] Any way of making sense of what's in the boot image?

2012-08-16 Thread John Benediktsson
Btw, you might be wondering why you can't step into the slot word:

If you look at it, it's a primitive, meaning implemented in the VM C++ code
or a compiler intrinsic:

```
IN: scratchpad \ slot see
IN: slots.private
PRIMITIVE: slot ( obj m -- value ) flushable
```

In this case, I believe it is emitted by 'cpu.x86.bootstrap`:

```
[
! load slot number
temp0 ds-reg [] MOV
! adjust stack pointer
ds-reg bootstrap-cell SUB
! load object
temp1 ds-reg [] MOV
! turn slot number into offset
fixnumslot@
! mask off tag
temp1 tag-bits get SHR
temp1 tag-bits get SHL
! load slot value
temp0 temp1 temp0 [+] MOV
! push to stack
ds-reg [] temp0 MOV
] \ slot define-sub-primitive
```

There are compiler intrinsics you can look at in compiler.cfg.intrinsics if
that interests you.

An example of a primitive VM word might be something like bignum-gcd, which
is defined in vm/math.cpp, pops two bignums from the stack and then
computes their GCD in C++ code and then pushes the result back onto the
stack.

```
void factor_vm::primitive_bignum_gcd()
{
POP_BIGNUMS(x,y);
ctx-push(tagbignum(bignum_gcd(x,y)));
}
```

The mapping is defined in core/bootstrap/primitives.factor

```
{
...
{ bignum-gcd math.private primitive_bignum_gcd ( x y -- z ) }
...
}
[ first4 make-primitive ] each
```




On Thu, Aug 16, 2012 at 8:18 AM, Michael Clagett mclag...@hotmail.comwrote:

  Wow.  Great, John!   Thanks.  This should keep me at bay for a good while.

 --
 From: mrj...@gmail.com
 Date: Thu, 16 Aug 2012 08:10:31 -0700

 To: factor-talk@lists.sourceforge.net
 Subject: Re: [Factor-talk] Any way of making sense of what's in the boot
 image?

 In the listener, if you run this code:

 IN: scratchpad clear
 IN: scratchpad value key associate

 Then step over to [ set-at ] keep

 If at this point you just keep stepping into things, you should do a
 deep dive into all the parts, including the 4 slot { array } declare which
 should give you something like {
 ~tombstone~ ~tombstone~ ~tombstone~ ~tombstone~ } (an array full of
 tombstone elements which indicate no key or value is present).  A
 hashtable with deleted elements will have ~empty~.  A hashtable with
 key/value will have { key value } at some point in the array.  The
 array is flattened key/value pairs, so a 4 bucket hashtable will have an 8
 element array storing key/value side-by-side starting at the even indices.

 I'm not sure what the 26-slot hash table is that you are looking at, so I
 put a clear in the code above to make sure your data stack is empty before
 walking.  It is also possible that you are tracing some code which is
 traversing the namespaces (a vector of hashtables containing symbolic
 variables used in parts of the code, with names like the ones you mention).

 A hashtable has 3 slots (the 0 slot is a numeric value), see:

 ```
 IN: scratchpad \ hashtable slots word-prop .
 {
 T{ slot-spec
 { name count }
 { offset 2 }
 { class array-capacity }
 { initial 0 }
 }
 T{ slot-spec
 { name deleted }
 { offset 3 }
 { class array-capacity }
 { initial 0 }
 }
 T{ slot-spec
 { name array }
 { offset 4 }
 { class array }
 { initial { } }
 }
 }
 ```

 You might also like to try describe, and poke around at the various word
 properties (see props below):

 ```
 IN: scratchpad \ hashtable describe
 IN: hashtables SYMBOL: hashtable
 hashcode  251442479911733628
 name  hashtable
 vocabularyhashtables
 def   [ \ hashtable ]
 props H{ { help-parent hashtables } { slots ~array~ } { ...
 pic-def   f
 pic-tail-def  f
 sub-primitive f
 ```


 On Thu, Aug 16, 2012 at 6:01 AM, Michael Clagett mclag...@hotmail.comwrote:

  Hi --

 Okay.  I'm going to ask for my first lifeline. :)  I'm tracing through
 some arcane stuff indeed.  Everything is going along swimmingly.  I get to
 the word new-key@, which at its start wants to execute [ array 2dup
 hash@ 0 f (new-key@) ] with the keep combinator.  All good so far.
 array resolves to [ 4 slot { array } declare ], which I believe should
 mean get the 4th slot of the object on top of stack and declare to Factor
 that you know for sure it is an array.  The object on the top of the
 stack, according to the Inspector, is a 26-slot hash table that includes
 such keys as architecture, auto-use?, bootstrap-syntax,
 bootsrapping?, etc.

 Now comes the part that baffles me.  When I get to executing slot
 (whether I try to step past it or descend into it), the Walker simply moves
 me all the way to the end of the qotation (past declare) and I see the
 hash-table and index from the top of the data stack replaced with a
 128-element array that has the 26 key-value pairs from the former hash
 table spread out through the array interspersed by tombstone objects; each
 of these key-value pairs that 

Re: [Factor-talk] Any way of making sense of what's in the boot image?

2012-08-16 Thread John Benediktsson
 So then, John, does that mean that in the [ 4 slot { array} declare ],
 that I'm getting the slot named array which is at offset 4 (and then
 declaring that to be an array, so as to disable some of the type safety
 checks)?


Yes, the hashtable code is written at a bit lower level and thus maybe a
little harder to read than one might normally write in Factor since it is
one of the building blocks that everything is built upon.  It is also
possible that some of the compiler optimizations that have been written in
the last couple of years make some of those declarations unnecessary,
although I'd have to look into it more to know for sure.

Also, due to the bootstrapping mechanism, some of the higher level language
constructs like locals and fry quotations are not available yet.  That is
something we hope to fix at some future point.


 Here it says slot takes two incoming values:  an obj and a non-negative
 fixnum, which is the nth slot.   In the hashtable slot-specs you list below
 there are only three slots listed, but it does say that the slot named
 array is at offset 4.   Is it this offset number that is being specified
 by the m parameter?  And thus is the array I am seeing in my original
 description the contents of the array slot of the hashtable that was
 originally on the stack?   That makes sense to me.   And the fact that the
 array is 128 slots long (allowing flattened representation of 64 key-value
 pairs) just means that the underlying array in the hashtable has 64
 buckets.  Is this a correct interpretation.  If it is, it makes sense that
 the actual 26 values stored in the hash table would be dispersed
 throught the 64 buckets, because this is what a hashtable does.


Yes, exactly!  The slot-spec tuple provides a generic description of what
is to be found in this case at offset 4.


Best,
John.
--
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/___
Factor-talk mailing list
Factor-talk@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/factor-talk


Re: [Factor-talk] Any way of making sense of what's in the boot image?

2012-08-16 Thread Michael Clagett
Great, thanks.

Sent from my iPhone

On Aug 16, 2012, at 1:11 PM, John Benediktsson mrj...@gmail.com wrote:

  
 So then, John, does that mean that in the [ 4 slot { array} declare ], that 
 I'm getting the slot named array which is at offset 4 (and then declaring 
 that to be an array, so as to disable some of the type safety checks)?   
 
 Yes, the hashtable code is written at a bit lower level and thus maybe a 
 little harder to read than one might normally write in Factor since it is one 
 of the building blocks that everything is built upon.  It is also possible 
 that some of the compiler optimizations that have been written in the last 
 couple of years make some of those declarations unnecessary, although I'd 
 have to look into it more to know for sure.
 
 Also, due to the bootstrapping mechanism, some of the higher level language 
 constructs like locals and fry quotations are not available yet.  That is 
 something we hope to fix at some future point.
  
 Here it says slot takes two incoming values:  an obj and a non-negative 
 fixnum, which is the nth slot.   In the hashtable slot-specs you list below 
 there are only three slots listed, but it does say that the slot named 
 array is at offset 4.   Is it this offset number that is being specified by 
 the m parameter?  And thus is the array I am seeing in my original 
 description the contents of the array slot of the hashtable that was 
 originally on the stack?   That makes sense to me.   And the fact that the 
 array is 128 slots long (allowing flattened representation of 64 key-value 
 pairs) just means that the underlying array in the hashtable has 64 buckets.  
 Is this a correct interpretation.  If it is, it makes sense that the actual 
 26 values stored in the hash table would be dispersed throught the 64 
 buckets, because this is what a hashtable does.
 
 Yes, exactly!  The slot-spec tuple provides a generic description of what 
 is to be found in this case at offset 4.  
 
 
 Best,
 John.
 --
 Live Security Virtual Conference
 Exclusive live event will cover all the ways today's security and 
 threat landscape has changed and how IT managers can respond. Discussions 
 will include endpoint security, mobile security and the latest in malware 
 threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
 ___
 Factor-talk mailing list
 Factor-talk@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/factor-talk
--
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/___
Factor-talk mailing list
Factor-talk@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/factor-talk
--
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/___
Factor-talk mailing list
Factor-talk@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/factor-talk


Re: [Factor-talk] Any way of making sense of what's in the boot image?

2012-08-15 Thread Michael Clagett

Quick question.   Any way of having the data and retain stack panes of the 
Walker display values in hex?
  Date: Mon, 13 Aug 2012 12:21:52 -0400
 From: arc...@gmail.com
 To: factor-talk@lists.sourceforge.net
 Subject: Re: [Factor-talk] Any way of making sense of what's in the boot  
 image?
 
 On Mon, Aug 13, 2012 at 11:52 AM, Michael Clagett mclag...@hotmail.com 
 wrote:
  Here's an obscure question that is of interest to me in my current quest,
  but probably not to anyone else.  So if there is a better forum for me to
  ask such things, I would love to be instructed; until I hear otherwise,
  however, I will continue to use this list.
 
  Is there any place where I can penetrate the meaning of the following
  constants:
 
  CONSTANT: rt-dlsym 0
  CONSTANT: rt-entry-point 1
  CONSTANT: rt-entry-point-pic 2
  CONSTANT: rt-entry-point-pic-tail 3
  CONSTANT: rt-here 4
  CONSTANT: rt-this 5
  CONSTANT: rt-literal 6
  CONSTANT: rt-untagged 7
  CONSTANT: rt-megamorphic-cache-hits 8
  CONSTANT: rt-vm 9
  CONSTANT: rt-cards-offset 10
  CONSTANT: rt-decks-offset 11
  CONSTANT: rt-exception-handler 12
  CONSTANT: rt-dlsym-toc 13
  CONSTANT: rt-inline-cache-miss 14
  CONSTANT: rt-safepoint 15
 
  So far I've only encountered rt-here and I've only seen it encoded into a
  relocation entry and not really used anywhere yet.  But this strikes me as
  the kind of thing it would be useful to know as I am slogging through this
  stuff.
 
  Not a hugely pressing question, as I'm sure I'll muddle through it.  But if
  anyone has a moment to illuminate, it would be nice.
 
 Those are relocation record types. When the compiler generates code
 for a word, it also needs to generate relocation entries every time it
 references another word in a jump or call statement, much like a
 native C compiler needs to do for symbols in other modules.
 The VM uses these relocation entries to update the operands of jump
 and call instructions when code is written to the code heap, when the
 code heap is compacted, or if code is moved in memory for any reason.
 The different rt-* constants are used to describe what kind of object
 a relocation refers to, such as a foreign function in a DLL (dlsym), a
 word entry point (entry-point-*), the current address (here), etc.
 
 -Joe
 
 --
 Live Security Virtual Conference
 Exclusive live event will cover all the ways today's security and 
 threat landscape has changed and how IT managers can respond. Discussions 
 will include endpoint security, mobile security and the latest in malware 
 threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
 ___
 Factor-talk mailing list
 Factor-talk@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/factor-talk
  --
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/___
Factor-talk mailing list
Factor-talk@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/factor-talk


Re: [Factor-talk] Any way of making sense of what's in the boot image?

2012-08-15 Thread John Benediktsson
If you want all numbers to print in hex, the easiest way is:

```
IN: scratchpad 16 number-base set-global
```


On Wed, Aug 15, 2012 at 4:04 AM, Michael Clagett mclag...@hotmail.comwrote:

  Quick question.   Any way of having the data and retain stack panes of
 the Walker display values in hex?

  Date: Mon, 13 Aug 2012 12:21:52 -0400
  From: arc...@gmail.com
  To: factor-talk@lists.sourceforge.net
  Subject: Re: [Factor-talk] Any way of making sense of what's in the boot
 image?
 
  On Mon, Aug 13, 2012 at 11:52 AM, Michael Clagett mclag...@hotmail.com
 wrote:
   Here's an obscure question that is of interest to me in my current
 quest,
   but probably not to anyone else. So if there is a better forum for me
 to
   ask such things, I would love to be instructed; until I hear otherwise,
   however, I will continue to use this list.
  
   Is there any place where I can penetrate the meaning of the following
   constants:
  
   CONSTANT: rt-dlsym 0
   CONSTANT: rt-entry-point 1
   CONSTANT: rt-entry-point-pic 2
   CONSTANT: rt-entry-point-pic-tail 3
   CONSTANT: rt-here 4
   CONSTANT: rt-this 5
   CONSTANT: rt-literal 6
   CONSTANT: rt-untagged 7
   CONSTANT: rt-megamorphic-cache-hits 8
   CONSTANT: rt-vm 9
   CONSTANT: rt-cards-offset 10
   CONSTANT: rt-decks-offset 11
   CONSTANT: rt-exception-handler 12
   CONSTANT: rt-dlsym-toc 13
   CONSTANT: rt-inline-cache-miss 14
   CONSTANT: rt-safepoint 15
  
   So far I've only encountered rt-here and I've only seen it encoded
 into a
   relocation entry and not really used anywhere yet. But this strikes me
 as
   the kind of thing it would be useful to know as I am slogging through
 this
   stuff.
  
   Not a hugely pressing question, as I'm sure I'll muddle through it.
 But if
   anyone has a moment to illuminate, it would be nice.
 
  Those are relocation record types. When the compiler generates code
  for a word, it also needs to generate relocation entries every time it
  references another word in a jump or call statement, much like a
  native C compiler needs to do for symbols in other modules.
  The VM uses these relocation entries to update the operands of jump
  and call instructions when code is written to the code heap, when the
  code heap is compacted, or if code is moved in memory for any reason.
  The different rt-* constants are used to describe what kind of object
  a relocation refers to, such as a foreign function in a DLL (dlsym), a
  word entry point (entry-point-*), the current address (here), etc.
 
  -Joe
 
 
 --
  Live Security Virtual Conference
  Exclusive live event will cover all the ways today's security and
  threat landscape has changed and how IT managers can respond.
 Discussions
  will include endpoint security, mobile security and the latest in
 malware
  threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
  ___
  Factor-talk mailing list
  Factor-talk@lists.sourceforge.net
  https://lists.sourceforge.net/lists/listinfo/factor-talk


 --
 Live Security Virtual Conference
 Exclusive live event will cover all the ways today's security and
 threat landscape has changed and how IT managers can respond. Discussions
 will include endpoint security, mobile security and the latest in malware
 threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
 ___
 Factor-talk mailing list
 Factor-talk@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/factor-talk


--
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/___
Factor-talk mailing list
Factor-talk@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/factor-talk


Re: [Factor-talk] Any way of making sense of what's in the boot image?

2012-08-15 Thread Michael Clagett
Thanks.  I knew it had to be something like that.  And if I want it to be the 
default every time I load the Listener, I'm sure there must be a way to set 
that up?

Sent from my iPhone

On Aug 15, 2012, at 11:01 AM, John Benediktsson mrj...@gmail.com wrote:

 If you want all numbers to print in hex, the easiest way is:
 
 ```
 IN: scratchpad 16 number-base set-global
 ```
 
 
 On Wed, Aug 15, 2012 at 4:04 AM, Michael Clagett mclag...@hotmail.com wrote:
 Quick question.   Any way of having the data and retain stack panes of the 
 Walker display values in hex?
  
  Date: Mon, 13 Aug 2012 12:21:52 -0400
  From: arc...@gmail.com
  To: factor-talk@lists.sourceforge.net
  Subject: Re: [Factor-talk] Any way of making sense of what's in the boot
  image?
  
  On Mon, Aug 13, 2012 at 11:52 AM, Michael Clagett mclag...@hotmail.com 
  wrote:
   Here's an obscure question that is of interest to me in my current quest,
   but probably not to anyone else.  So if there is a better forum for me to
   ask such things, I would love to be instructed; until I hear otherwise,
   however, I will continue to use this list.
  
   Is there any place where I can penetrate the meaning of the following
   constants:
  
   CONSTANT: rt-dlsym 0
   CONSTANT: rt-entry-point 1
   CONSTANT: rt-entry-point-pic 2
   CONSTANT: rt-entry-point-pic-tail 3
   CONSTANT: rt-here 4
   CONSTANT: rt-this 5
   CONSTANT: rt-literal 6
   CONSTANT: rt-untagged 7
   CONSTANT: rt-megamorphic-cache-hits 8
   CONSTANT: rt-vm 9
   CONSTANT: rt-cards-offset 10
   CONSTANT: rt-decks-offset 11
   CONSTANT: rt-exception-handler 12
   CONSTANT: rt-dlsym-toc 13
   CONSTANT: rt-inline-cache-miss 14
   CONSTANT: rt-safepoint 15
  
   So far I've only encountered rt-here and I've only seen it encoded into a
   relocation entry and not really used anywhere yet. But this strikes me as
   the kind of thing it would be useful to know as I am slogging through this
   stuff.
  
   Not a hugely pressing question, as I'm sure I'll muddle through it. But if
   anyone has a moment to illuminate, it would be nice.
  
  Those are relocation record types. When the compiler generates code
  for a word, it also needs to generate relocation entries every time it
  references another word in a jump or call statement, much like a
  native C compiler needs to do for symbols in other modules.
  The VM uses these relocation entries to update the operands of jump
  and call instructions when code is written to the code heap, when the
  code heap is compacted, or if code is moved in memory for any reason.
  The different rt-* constants are used to describe what kind of object
  a relocation refers to, such as a foreign function in a DLL (dlsym), a
  word entry point (entry-point-*), the current address (here), etc.
  
  -Joe
  
  --
  Live Security Virtual Conference
  Exclusive live event will cover all the ways today's security and 
  threat landscape has changed and how IT managers can respond. Discussions 
  will include endpoint security, mobile security and the latest in malware 
  threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
  ___
  Factor-talk mailing list
  Factor-talk@lists.sourceforge.net
  https://lists.sourceforge.net/lists/listinfo/factor-talk
 
 --
 Live Security Virtual Conference
 Exclusive live event will cover all the ways today's security and
 threat landscape has changed and how IT managers can respond. Discussions
 will include endpoint security, mobile security and the latest in malware
 threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
 ___
 Factor-talk mailing list
 Factor-talk@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/factor-talk
 
 
 --
 Live Security Virtual Conference
 Exclusive live event will cover all the ways today's security and 
 threat landscape has changed and how IT managers can respond. Discussions 
 will include endpoint security, mobile security and the latest in malware 
 threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
 ___
 Factor-talk mailing list
 Factor-talk@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/factor-talk
--
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/___
Factor-talk mailing list

Re: [Factor-talk] Any way of making sense of what's in the boot image?

2012-08-15 Thread Doug Coleman
1) Factor loads a ~/.factor-rc file every time it starts. You can put
things there:

USE: tools.scaffold
scaffold-factor-rc

Click it, edit it and add:

USING: prettyprint.config namespaces ;
16 number-base set-global



2) Alternately, there's a boot rc file that gets loaded after bootstrap:

USE: tools.scaffold
scaffold-factor-boot-rc

Click it, edit it and add:

USING: prettyprint.config namespaces ;
16 number-base set-global

To load it without bootstrapping, call 'run-bootstrap-init' and then
'save' your image.


Doug


On Wed, Aug 15, 2012 at 8:22 AM, Michael Clagett mclag...@hotmail.com wrote:
 Thanks.  I knew it had to be something like that.  And if I want it to be
 the default every time I load the Listener, I'm sure there must be a way to
 set that up?

 Sent from my iPhone

 On Aug 15, 2012, at 11:01 AM, John Benediktsson mrj...@gmail.com wrote:

 If you want all numbers to print in hex, the easiest way is:

 ```
 IN: scratchpad 16 number-base set-global
 ```


 On Wed, Aug 15, 2012 at 4:04 AM, Michael Clagett mclag...@hotmail.com
 wrote:

 Quick question.   Any way of having the data and retain stack panes of the
 Walker display values in hex?

  Date: Mon, 13 Aug 2012 12:21:52 -0400
  From: arc...@gmail.com
  To: factor-talk@lists.sourceforge.net
  Subject: Re: [Factor-talk] Any way of making sense of what's in the boot
  image?
 
  On Mon, Aug 13, 2012 at 11:52 AM, Michael Clagett mclag...@hotmail.com
  wrote:
   Here's an obscure question that is of interest to me in my current
   quest,
   but probably not to anyone else. So if there is a better forum for me
   to
   ask such things, I would love to be instructed; until I hear
   otherwise,
   however, I will continue to use this list.
  
   Is there any place where I can penetrate the meaning of the following
   constants:
  
   CONSTANT: rt-dlsym 0
   CONSTANT: rt-entry-point 1
   CONSTANT: rt-entry-point-pic 2
   CONSTANT: rt-entry-point-pic-tail 3
   CONSTANT: rt-here 4
   CONSTANT: rt-this 5
   CONSTANT: rt-literal 6
   CONSTANT: rt-untagged 7
   CONSTANT: rt-megamorphic-cache-hits 8
   CONSTANT: rt-vm 9
   CONSTANT: rt-cards-offset 10
   CONSTANT: rt-decks-offset 11
   CONSTANT: rt-exception-handler 12
   CONSTANT: rt-dlsym-toc 13
   CONSTANT: rt-inline-cache-miss 14
   CONSTANT: rt-safepoint 15
  
   So far I've only encountered rt-here and I've only seen it encoded
   into a
   relocation entry and not really used anywhere yet. But this strikes me
   as
   the kind of thing it would be useful to know as I am slogging through
   this
   stuff.
  
   Not a hugely pressing question, as I'm sure I'll muddle through it.
   But if
   anyone has a moment to illuminate, it would be nice.
 
  Those are relocation record types. When the compiler generates code
  for a word, it also needs to generate relocation entries every time it
  references another word in a jump or call statement, much like a
  native C compiler needs to do for symbols in other modules.
  The VM uses these relocation entries to update the operands of jump
  and call instructions when code is written to the code heap, when the
  code heap is compacted, or if code is moved in memory for any reason.
  The different rt-* constants are used to describe what kind of object
  a relocation refers to, such as a foreign function in a DLL (dlsym), a
  word entry point (entry-point-*), the current address (here), etc.
 
  -Joe
 
 
  --
  Live Security Virtual Conference
  Exclusive live event will cover all the ways today's security and
  threat landscape has changed and how IT managers can respond.
  Discussions
  will include endpoint security, mobile security and the latest in
  malware
  threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
  ___
  Factor-talk mailing list
  Factor-talk@lists.sourceforge.net
  https://lists.sourceforge.net/lists/listinfo/factor-talk


 --
 Live Security Virtual Conference
 Exclusive live event will cover all the ways today's security and
 threat landscape has changed and how IT managers can respond. Discussions
 will include endpoint security, mobile security and the latest in malware
 threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
 ___
 Factor-talk mailing list
 Factor-talk@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/factor-talk


 --
 Live Security Virtual Conference
 Exclusive live event will cover all the ways today's security and
 threat landscape has changed and how IT managers can respond. Discussions
 will include endpoint security, mobile security and the latest in malware
 threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/

 

Re: [Factor-talk] Any way of making sense of what's in the boot image?

2012-08-15 Thread Michael Clagett
Beautiful.  Thanks.

Sent from my iPhone

On Aug 15, 2012, at 11:30 AM, Doug Coleman doug.cole...@gmail.com wrote:

 1) Factor loads a ~/.factor-rc file every time it starts. You can put
 things there:
 
 USE: tools.scaffold
 scaffold-factor-rc
 
 Click it, edit it and add:
 
 USING: prettyprint.config namespaces ;
 16 number-base set-global
 
 
 
 2) Alternately, there's a boot rc file that gets loaded after bootstrap:
 
 USE: tools.scaffold
 scaffold-factor-boot-rc
 
 Click it, edit it and add:
 
 USING: prettyprint.config namespaces ;
 16 number-base set-global
 
 To load it without bootstrapping, call 'run-bootstrap-init' and then
 'save' your image.
 
 
 Doug
 
 
 On Wed, Aug 15, 2012 at 8:22 AM, Michael Clagett mclag...@hotmail.com wrote:
 Thanks.  I knew it had to be something like that.  And if I want it to be
 the default every time I load the Listener, I'm sure there must be a way to
 set that up?
 
 Sent from my iPhone
 
 On Aug 15, 2012, at 11:01 AM, John Benediktsson mrj...@gmail.com wrote:
 
 If you want all numbers to print in hex, the easiest way is:
 
 ```
 IN: scratchpad 16 number-base set-global
 ```
 
 
 On Wed, Aug 15, 2012 at 4:04 AM, Michael Clagett mclag...@hotmail.com
 wrote:
 
 Quick question.   Any way of having the data and retain stack panes of the
 Walker display values in hex?
 
 Date: Mon, 13 Aug 2012 12:21:52 -0400
 From: arc...@gmail.com
 To: factor-talk@lists.sourceforge.net
 Subject: Re: [Factor-talk] Any way of making sense of what's in the boot
 image?
 
 On Mon, Aug 13, 2012 at 11:52 AM, Michael Clagett mclag...@hotmail.com
 wrote:
 Here's an obscure question that is of interest to me in my current
 quest,
 but probably not to anyone else. So if there is a better forum for me
 to
 ask such things, I would love to be instructed; until I hear
 otherwise,
 however, I will continue to use this list.
 
 Is there any place where I can penetrate the meaning of the following
 constants:
 
 CONSTANT: rt-dlsym 0
 CONSTANT: rt-entry-point 1
 CONSTANT: rt-entry-point-pic 2
 CONSTANT: rt-entry-point-pic-tail 3
 CONSTANT: rt-here 4
 CONSTANT: rt-this 5
 CONSTANT: rt-literal 6
 CONSTANT: rt-untagged 7
 CONSTANT: rt-megamorphic-cache-hits 8
 CONSTANT: rt-vm 9
 CONSTANT: rt-cards-offset 10
 CONSTANT: rt-decks-offset 11
 CONSTANT: rt-exception-handler 12
 CONSTANT: rt-dlsym-toc 13
 CONSTANT: rt-inline-cache-miss 14
 CONSTANT: rt-safepoint 15
 
 So far I've only encountered rt-here and I've only seen it encoded
 into a
 relocation entry and not really used anywhere yet. But this strikes me
 as
 the kind of thing it would be useful to know as I am slogging through
 this
 stuff.
 
 Not a hugely pressing question, as I'm sure I'll muddle through it.
 But if
 anyone has a moment to illuminate, it would be nice.
 
 Those are relocation record types. When the compiler generates code
 for a word, it also needs to generate relocation entries every time it
 references another word in a jump or call statement, much like a
 native C compiler needs to do for symbols in other modules.
 The VM uses these relocation entries to update the operands of jump
 and call instructions when code is written to the code heap, when the
 code heap is compacted, or if code is moved in memory for any reason.
 The different rt-* constants are used to describe what kind of object
 a relocation refers to, such as a foreign function in a DLL (dlsym), a
 word entry point (entry-point-*), the current address (here), etc.
 
 -Joe
 
 
 --
 Live Security Virtual Conference
 Exclusive live event will cover all the ways today's security and
 threat landscape has changed and how IT managers can respond.
 Discussions
 will include endpoint security, mobile security and the latest in
 malware
 threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
 ___
 Factor-talk mailing list
 Factor-talk@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/factor-talk
 
 
 --
 Live Security Virtual Conference
 Exclusive live event will cover all the ways today's security and
 threat landscape has changed and how IT managers can respond. Discussions
 will include endpoint security, mobile security and the latest in malware
 threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
 ___
 Factor-talk mailing list
 Factor-talk@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/factor-talk
 
 
 --
 Live Security Virtual Conference
 Exclusive live event will cover all the ways today's security and
 threat landscape has changed and how IT managers can respond. Discussions
 will include endpoint security, mobile security and the latest in malware
 threats. 

Re: [Factor-talk] Any way of making sense of what's in the boot image?

2012-08-14 Thread Michael Clagett

One constructive criticism type comment, if you'll permit me.   While what I 
say directly below is absolutely true, it's true on a micro level.  At the 
broader level, the heavy use of (sometimes lengthy) quotations to feed 
workhorse words like define-sub-primitive make understanding what's going on 
quite difficult.  Although I realize the bootstrapping mechanism is not a 
general area of interest to many, I think something on the order of about 25 
well-placed comments prefacing some of the more extensive quotations would help 
improve readability tremendously, just in case someone needs to understand the 
internals of this mechanism. Just a thought, offered in a spirit of complete 
good will and overall general awe at the care and discipline that has gone into 
this work. 
 From: mclag...@hotmail.com
To: factor-talk@lists.sourceforge.net
Subject: RE: [Factor-talk] Any way of making sense of what's in the boot image?
Date: Tue, 14 Aug 2012 05:28:45 +





Been looking at some of the x86 assembler code.  Damn!  All I can say is that I 
wish to hell I had had Factor when I wrote my own.   Quite a bit different 
approach, but the clarity and succinctness is tantalizing.
 
From: mclag...@hotmail.com
To: factor-talk@lists.sourceforge.net
Date: Mon, 13 Aug 2012 16:46:38 +
Subject: Re: [Factor-talk] Any way of making sense of what's in the boot image?





Thank you, Joe, for the quick response.  It was actually the information in the 
such as clause of your last sentence that I was looking for.  I don't mean 
for you to take the time out to document the meaning of these different 
constants, but if it is documented somewhere other than in the creators' heads, 
I would love to be directed to it.   Not a big deal, because I'm sure that when 
I get to seeing them used in the boot-image initialization code, all will 
become clear.  Still, it might help me better understand what's being done at 
the make-image level to know.  
 Date: Mon, 13 Aug 2012 12:21:52 -0400
 From: arc...@gmail.com
 To: factor-talk@lists.sourceforge.net
 Subject: Re: [Factor-talk] Any way of making sense of what's in the boot  
 image?
 
 On Mon, Aug 13, 2012 at 11:52 AM, Michael Clagett mclag...@hotmail.com 
 wrote:
  Here's an obscure question that is of interest to me in my current quest,
  but probably not to anyone else.  So if there is a better forum for me to
  ask such things, I would love to be instructed; until I hear otherwise,
  however, I will continue to use this list.
 
  Is there any place where I can penetrate the meaning of the following
  constants:
 
  CONSTANT: rt-dlsym 0
  CONSTANT: rt-entry-point 1
  CONSTANT: rt-entry-point-pic 2
  CONSTANT: rt-entry-point-pic-tail 3
  CONSTANT: rt-here 4
  CONSTANT: rt-this 5
  CONSTANT: rt-literal 6
  CONSTANT: rt-untagged 7
  CONSTANT: rt-megamorphic-cache-hits 8
  CONSTANT: rt-vm 9
  CONSTANT: rt-cards-offset 10
  CONSTANT: rt-decks-offset 11
  CONSTANT: rt-exception-handler 12
  CONSTANT: rt-dlsym-toc 13
  CONSTANT: rt-inline-cache-miss 14
  CONSTANT: rt-safepoint 15
 
  So far I've only encountered rt-here and I've only seen it encoded into a
  relocation entry and not really used anywhere yet.  But this strikes me as
  the kind of thing it would be useful to know as I am slogging through this
  stuff.
 
  Not a hugely pressing question, as I'm sure I'll muddle through it.  But if
  anyone has a moment to illuminate, it would be nice.
 
 Those are relocation record types. When the compiler generates code
 for a word, it also needs to generate relocation entries every time it
 references another word in a jump or call statement, much like a
 native C compiler needs to do for symbols in other modules.
 The VM uses these relocation entries to update the operands of jump
 and call instructions when code is written to the code heap, when the
 code heap is compacted, or if code is moved in memory for any reason.
 The different rt-* constants are used to describe what kind of object
 a relocation refers to, such as a foreign function in a DLL (dlsym), a
 word entry point (entry-point-*), the current address (here), etc.
 
 -Joe
 
 --
 Live Security Virtual Conference
 Exclusive live event will cover all the ways today's security and 
 threat landscape has changed and how IT managers can respond. Discussions 
 will include endpoint security, mobile security and the latest in malware 
 threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
 ___
 Factor-talk mailing list
 Factor-talk@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/factor-talk
  

--
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. 

Re: [Factor-talk] Any way of making sense of what's in the boot image?

2012-08-14 Thread John Benediktsson
Any documentation that you write as part of your investigation would be
welcome contributions.

On Tue, Aug 14, 2012 at 5:27 PM, Michael Clagett mclag...@hotmail.comwrote:

  One constructive criticism type comment, if you'll permit me.   While
 what I say directly below is absolutely true, it's true on a micro level.
 At the broader level, the heavy use of (sometimes lengthy) quotations to
 feed workhorse words like define-sub-primitive make understanding what's
 going on quite difficult.  Although I realize the bootstrapping mechanism
 is not a general area of interest to many, I think something on the order
 of about 25 well-placed comments prefacing some of the more extensive
 quotations would help improve readability tremendously, just in case
 someone needs to understand the internals of this mechanism.

 Just a thought, offered in a spirit of complete good will and overall
 general awe at the care and discipline that has gone into this work.

 --
 From: mclag...@hotmail.com
 To: factor-talk@lists.sourceforge.net
 Subject: RE: [Factor-talk] Any way of making sense of what's in the boot
 image?
 Date: Tue, 14 Aug 2012 05:28:45 +


  Been looking at some of the x86 assembler code.  Damn!  All I can say is
 that I wish to hell I had had Factor when I wrote my own.   Quite a bit
 different approach, but the clarity and succinctness is tantalizing.

 --
 From: mclag...@hotmail.com
 To: factor-talk@lists.sourceforge.net
 Date: Mon, 13 Aug 2012 16:46:38 +
 Subject: Re: [Factor-talk] Any way of making sense of what's in the boot
 image?

  Thank you, Joe, for the quick response.  It was actually the information
 in the such as clause of your last sentence that I was looking for.  I
 don't mean for you to take the time out to document the meaning of these
 different constants, but if it is documented somewhere other than in the
 creators' heads, I would love to be directed to it.   Not a big deal,
 because I'm sure that when I get to seeing them used in the boot-image
 initialization code, all will become clear.  Still, it might help me better
 understand what's being done at the make-image level to know.
  Date: Mon, 13 Aug 2012 12:21:52 -0400
  From: arc...@gmail.com
  To: factor-talk@lists.sourceforge.net
  Subject: Re: [Factor-talk] Any way of making sense of what's in the boot
 image?
 
  On Mon, Aug 13, 2012 at 11:52 AM, Michael Clagett mclag...@hotmail.com
 wrote:
   Here's an obscure question that is of interest to me in my current
 quest,
   but probably not to anyone else. So if there is a better forum for me
 to
   ask such things, I would love to be instructed; until I hear otherwise,
   however, I will continue to use this list.
  
   Is there any place where I can penetrate the meaning of the following
   constants:
  
   CONSTANT: rt-dlsym 0
   CONSTANT: rt-entry-point 1
   CONSTANT: rt-entry-point-pic 2
   CONSTANT: rt-entry-point-pic-tail 3
   CONSTANT: rt-here 4
   CONSTANT: rt-this 5
   CONSTANT: rt-literal 6
   CONSTANT: rt-untagged 7
   CONSTANT: rt-megamorphic-cache-hits 8
   CONSTANT: rt-vm 9
   CONSTANT: rt-cards-offset 10
   CONSTANT: rt-decks-offset 11
   CONSTANT: rt-exception-handler 12
   CONSTANT: rt-dlsym-toc 13
   CONSTANT: rt-inline-cache-miss 14
   CONSTANT: rt-safepoint 15
  
   So far I've only encountered rt-here and I've only seen it encoded
 into a
   relocation entry and not really used anywhere yet. But this strikes me
 as
   the kind of thing it would be useful to know as I am slogging through
 this
   stuff.
  
   Not a hugely pressing question, as I'm sure I'll muddle through it.
 But if
   anyone has a moment to illuminate, it would be nice.
 
  Those are relocation record types. When the compiler generates code
  for a word, it also needs to generate relocation entries every time it
  references another word in a jump or call statement, much like a
  native C compiler needs to do for symbols in other modules.
  The VM uses these relocation entries to update the operands of jump
  and call instructions when code is written to the code heap, when the
  code heap is compacted, or if code is moved in memory for any reason.
  The different rt-* constants are used to describe what kind of object
  a relocation refers to, such as a foreign function in a DLL (dlsym), a
  word entry point (entry-point-*), the current address (here), etc.
 
  -Joe
 
 
 --
  Live Security Virtual Conference
  Exclusive live event will cover all the ways today's security and
  threat landscape has changed and how IT managers can respond.
 Discussions
  will include endpoint security, mobile security and the latest in
 malware
  threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
  ___
  Factor-talk mailing list
  Factor-talk@lists.sourceforge.net
  

Re: [Factor-talk] Any way of making sense of what's in the boot image?

2012-08-14 Thread Michael Clagett

Roger, that.   I will definitely do it.  In fact, I think you will be 
pleasantly surprised.
 From: mrj...@gmail.com
Date: Tue, 14 Aug 2012 17:35:39 -0700
To: factor-talk@lists.sourceforge.net
Subject: Re: [Factor-talk] Any way of making sense of what's in the boot
image?

Any documentation that you write as part of your investigation would be welcome 
contributions.

On Tue, Aug 14, 2012 at 5:27 PM, Michael Clagett mclag...@hotmail.com wrote:






One constructive criticism type comment, if you'll permit me.   While what I 
say directly below is absolutely true, it's true on a micro level.  At the 
broader level, the heavy use of (sometimes lengthy) quotations to feed 
workhorse words like define-sub-primitive make understanding what's going on 
quite difficult.  Although I realize the bootstrapping mechanism is not a 
general area of interest to many, I think something on the order of about 25 
well-placed comments prefacing some of the more extensive quotations would help 
improve readability tremendously, just in case someone needs to understand the 
internals of this mechanism.


 
Just a thought, offered in a spirit of complete good will and overall general 
awe at the care and discipline that has gone into this work. 
 
From: mclag...@hotmail.com


To: factor-talk@lists.sourceforge.net
Subject: RE: [Factor-talk] Any way of making sense of what's in the boot image?
Date: Tue, 14 Aug 2012 05:28:45 +







Been looking at some of the x86 assembler code.  Damn!  All I can say is that I 
wish to hell I had had Factor when I wrote my own.   Quite a bit different 
approach, but the clarity and succinctness is tantalizing.
 


From: mclag...@hotmail.com
To: factor-talk@lists.sourceforge.net

Date: Mon, 13 Aug 2012 16:46:38 +

Subject: Re: [Factor-talk] Any way of making sense of what's in the boot image?





Thank you, Joe, for the quick response.  It was actually the information in the 
such as clause of your last sentence that I was looking for.  I don't mean 
for you to take the time out to document the meaning of these different 
constants, but if it is documented somewhere other than in the creators' heads, 
I would love to be directed to it.   Not a big deal, because I'm sure that when 
I get to seeing them used in the boot-image initialization code, all will 
become clear.  Still, it might help me better understand what's being done at 
the make-image level to know.  


 Date: Mon, 13 Aug 2012 12:21:52 -0400
 From: arc...@gmail.com
 To: factor-talk@lists.sourceforge.net


 Subject: Re: [Factor-talk] Any way of making sense of what's in the boot  
 image?
 
 On Mon, Aug 13, 2012 at 11:52 AM, Michael Clagett mclag...@hotmail.com 
 wrote:


  Here's an obscure question that is of interest to me in my current quest,
  but probably not to anyone else.  So if there is a better forum for me to
  ask such things, I would love to be instructed; until I hear otherwise,


  however, I will continue to use this list.
 
  Is there any place where I can penetrate the meaning of the following
  constants:
 
  CONSTANT: rt-dlsym 0


  CONSTANT: rt-entry-point 1
  CONSTANT: rt-entry-point-pic 2
  CONSTANT: rt-entry-point-pic-tail 3
  CONSTANT: rt-here 4
  CONSTANT: rt-this 5
  CONSTANT: rt-literal 6


  CONSTANT: rt-untagged 7
  CONSTANT: rt-megamorphic-cache-hits 8
  CONSTANT: rt-vm 9
  CONSTANT: rt-cards-offset 10
  CONSTANT: rt-decks-offset 11
  CONSTANT: rt-exception-handler 12


  CONSTANT: rt-dlsym-toc 13
  CONSTANT: rt-inline-cache-miss 14
  CONSTANT: rt-safepoint 15
 
  So far I've only encountered rt-here and I've only seen it encoded into a


  relocation entry and not really used anywhere yet.  But this strikes me as
  the kind of thing it would be useful to know as I am slogging through this
  stuff.
 
  Not a hugely pressing question, as I'm sure I'll muddle through it.  But if


  anyone has a moment to illuminate, it would be nice.
 
 Those are relocation record types. When the compiler generates code
 for a word, it also needs to generate relocation entries every time it


 references another word in a jump or call statement, much like a
 native C compiler needs to do for symbols in other modules.
 The VM uses these relocation entries to update the operands of jump
 and call instructions when code is written to the code heap, when the


 code heap is compacted, or if code is moved in memory for any reason.
 The different rt-* constants are used to describe what kind of object
 a relocation refers to, such as a foreign function in a DLL (dlsym), a


 word entry point (entry-point-*), the current address (here), etc.
 
 -Joe
 
 --
 Live Security Virtual Conference


 Exclusive live event will cover all the ways today's security and 
 threat landscape has changed and how IT managers can respond. Discussions 
 will include endpoint security, mobile security and the latest in malware 


 threats. 

Re: [Factor-talk] Any way of making sense of what's in the boot image?

2012-08-13 Thread Doug Coleman
Is this you?

http://www.clarkprosecutor.org/html/death/US/clagett651.htm

On Mon, Aug 13, 2012 at 9:46 AM, Michael Clagett mclag...@hotmail.com wrote:
 Thank you, Joe, for the quick response.  It was actually the information in
 the such as clause of your last sentence that I was looking for.  I don't
 mean for you to take the time out to document the meaning of these different
 constants, but if it is documented somewhere other than in the creators'
 heads, I would love to be directed to it.   Not a big deal, because I'm sure
 that when I get to seeing them used in the boot-image initialization code,
 all will become clear.  Still, it might help me better understand what's
 being done at the make-image level to know.
 Date: Mon, 13 Aug 2012 12:21:52 -0400

 From: arc...@gmail.com
 To: factor-talk@lists.sourceforge.net
 Subject: Re: [Factor-talk] Any way of making sense of what's in the boot
 image?

 On Mon, Aug 13, 2012 at 11:52 AM, Michael Clagett mclag...@hotmail.com
 wrote:
  Here's an obscure question that is of interest to me in my current
  quest,
  but probably not to anyone else. So if there is a better forum for me to
  ask such things, I would love to be instructed; until I hear otherwise,
  however, I will continue to use this list.
 
  Is there any place where I can penetrate the meaning of the following
  constants:
 
  CONSTANT: rt-dlsym 0
  CONSTANT: rt-entry-point 1
  CONSTANT: rt-entry-point-pic 2
  CONSTANT: rt-entry-point-pic-tail 3
  CONSTANT: rt-here 4
  CONSTANT: rt-this 5
  CONSTANT: rt-literal 6
  CONSTANT: rt-untagged 7
  CONSTANT: rt-megamorphic-cache-hits 8
  CONSTANT: rt-vm 9
  CONSTANT: rt-cards-offset 10
  CONSTANT: rt-decks-offset 11
  CONSTANT: rt-exception-handler 12
  CONSTANT: rt-dlsym-toc 13
  CONSTANT: rt-inline-cache-miss 14
  CONSTANT: rt-safepoint 15
 
  So far I've only encountered rt-here and I've only seen it encoded into
  a
  relocation entry and not really used anywhere yet. But this strikes me
  as
  the kind of thing it would be useful to know as I am slogging through
  this
  stuff.
 
  Not a hugely pressing question, as I'm sure I'll muddle through it. But
  if
  anyone has a moment to illuminate, it would be nice.

 Those are relocation record types. When the compiler generates code
 for a word, it also needs to generate relocation entries every time it
 references another word in a jump or call statement, much like a
 native C compiler needs to do for symbols in other modules.
 The VM uses these relocation entries to update the operands of jump
 and call instructions when code is written to the code heap, when the
 code heap is compacted, or if code is moved in memory for any reason.
 The different rt-* constants are used to describe what kind of object
 a relocation refers to, such as a foreign function in a DLL (dlsym), a
 word entry point (entry-point-*), the current address (here), etc.

 -Joe


 --
 Live Security Virtual Conference
 Exclusive live event will cover all the ways today's security and
 threat landscape has changed and how IT managers can respond. Discussions
 will include endpoint security, mobile security and the latest in malware
 threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
 ___
 Factor-talk mailing list
 Factor-talk@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/factor-talk

 --
 Live Security Virtual Conference
 Exclusive live event will cover all the ways today's security and
 threat landscape has changed and how IT managers can respond. Discussions
 will include endpoint security, mobile security and the latest in malware
 threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
 ___
 Factor-talk mailing list
 Factor-talk@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/factor-talk


--
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
___
Factor-talk mailing list
Factor-talk@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/factor-talk


Re: [Factor-talk] Any way of making sense of what's in the boot image?

2012-08-13 Thread Michael Clagett

(So you had better be nice to me; I don't mess around.)
  Date: Mon, 13 Aug 2012 09:50:04 -0700
 From: doug.cole...@gmail.com
 To: factor-talk@lists.sourceforge.net
 Subject: Re: [Factor-talk] Any way of making sense of what's in the boot  
 image?
 
 Is this you?
 
 http://www.clarkprosecutor.org/html/death/US/clagett651.htm
 
 On Mon, Aug 13, 2012 at 9:46 AM, Michael Clagett mclag...@hotmail.com wrote:
  Thank you, Joe, for the quick response.  It was actually the information in
  the such as clause of your last sentence that I was looking for.  I don't
  mean for you to take the time out to document the meaning of these different
  constants, but if it is documented somewhere other than in the creators'
  heads, I would love to be directed to it.   Not a big deal, because I'm sure
  that when I get to seeing them used in the boot-image initialization code,
  all will become clear.  Still, it might help me better understand what's
  being done at the make-image level to know.
  Date: Mon, 13 Aug 2012 12:21:52 -0400
 
  From: arc...@gmail.com
  To: factor-talk@lists.sourceforge.net
  Subject: Re: [Factor-talk] Any way of making sense of what's in the boot
  image?
 
  On Mon, Aug 13, 2012 at 11:52 AM, Michael Clagett mclag...@hotmail.com
  wrote:
   Here's an obscure question that is of interest to me in my current
   quest,
   but probably not to anyone else. So if there is a better forum for me to
   ask such things, I would love to be instructed; until I hear otherwise,
   however, I will continue to use this list.
  
   Is there any place where I can penetrate the meaning of the following
   constants:
  
   CONSTANT: rt-dlsym 0
   CONSTANT: rt-entry-point 1
   CONSTANT: rt-entry-point-pic 2
   CONSTANT: rt-entry-point-pic-tail 3
   CONSTANT: rt-here 4
   CONSTANT: rt-this 5
   CONSTANT: rt-literal 6
   CONSTANT: rt-untagged 7
   CONSTANT: rt-megamorphic-cache-hits 8
   CONSTANT: rt-vm 9
   CONSTANT: rt-cards-offset 10
   CONSTANT: rt-decks-offset 11
   CONSTANT: rt-exception-handler 12
   CONSTANT: rt-dlsym-toc 13
   CONSTANT: rt-inline-cache-miss 14
   CONSTANT: rt-safepoint 15
  
   So far I've only encountered rt-here and I've only seen it encoded into
   a
   relocation entry and not really used anywhere yet. But this strikes me
   as
   the kind of thing it would be useful to know as I am slogging through
   this
   stuff.
  
   Not a hugely pressing question, as I'm sure I'll muddle through it. But
   if
   anyone has a moment to illuminate, it would be nice.
 
  Those are relocation record types. When the compiler generates code
  for a word, it also needs to generate relocation entries every time it
  references another word in a jump or call statement, much like a
  native C compiler needs to do for symbols in other modules.
  The VM uses these relocation entries to update the operands of jump
  and call instructions when code is written to the code heap, when the
  code heap is compacted, or if code is moved in memory for any reason.
  The different rt-* constants are used to describe what kind of object
  a relocation refers to, such as a foreign function in a DLL (dlsym), a
  word entry point (entry-point-*), the current address (here), etc.
 
  -Joe
 
 
  --
  Live Security Virtual Conference
  Exclusive live event will cover all the ways today's security and
  threat landscape has changed and how IT managers can respond. Discussions
  will include endpoint security, mobile security and the latest in malware
  threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
  ___
  Factor-talk mailing list
  Factor-talk@lists.sourceforge.net
  https://lists.sourceforge.net/lists/listinfo/factor-talk
 
  --
  Live Security Virtual Conference
  Exclusive live event will cover all the ways today's security and
  threat landscape has changed and how IT managers can respond. Discussions
  will include endpoint security, mobile security and the latest in malware
  threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
  ___
  Factor-talk mailing list
  Factor-talk@lists.sourceforge.net
  https://lists.sourceforge.net/lists/listinfo/factor-talk
 
 
 --
 Live Security Virtual Conference
 Exclusive live event will cover all the ways today's security and 
 threat landscape has changed and how IT managers can respond. Discussions 
 will include endpoint security, mobile security and the latest in malware 
 threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
 ___
 Factor-talk mailing list
 Factor-talk@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/factor-talk
 

Re: [Factor-talk] Any way of making sense of what's in the boot image?

2012-08-13 Thread Michael Clagett

Been looking at some of the x86 assembler code.  Damn!  All I can say is that I 
wish to hell I had had Factor when I wrote my own.   Quite a bit different 
approach, but the clarity and succinctness is tantalizing.
 From: mclag...@hotmail.com
To: factor-talk@lists.sourceforge.net
Date: Mon, 13 Aug 2012 16:46:38 +
Subject: Re: [Factor-talk] Any way of making sense of what's in the boot image?





Thank you, Joe, for the quick response.  It was actually the information in the 
such as clause of your last sentence that I was looking for.  I don't mean 
for you to take the time out to document the meaning of these different 
constants, but if it is documented somewhere other than in the creators' heads, 
I would love to be directed to it.   Not a big deal, because I'm sure that when 
I get to seeing them used in the boot-image initialization code, all will 
become clear.  Still, it might help me better understand what's being done at 
the make-image level to know.  
 Date: Mon, 13 Aug 2012 12:21:52 -0400
 From: arc...@gmail.com
 To: factor-talk@lists.sourceforge.net
 Subject: Re: [Factor-talk] Any way of making sense of what's in the boot  
 image?
 
 On Mon, Aug 13, 2012 at 11:52 AM, Michael Clagett mclag...@hotmail.com 
 wrote:
  Here's an obscure question that is of interest to me in my current quest,
  but probably not to anyone else.  So if there is a better forum for me to
  ask such things, I would love to be instructed; until I hear otherwise,
  however, I will continue to use this list.
 
  Is there any place where I can penetrate the meaning of the following
  constants:
 
  CONSTANT: rt-dlsym 0
  CONSTANT: rt-entry-point 1
  CONSTANT: rt-entry-point-pic 2
  CONSTANT: rt-entry-point-pic-tail 3
  CONSTANT: rt-here 4
  CONSTANT: rt-this 5
  CONSTANT: rt-literal 6
  CONSTANT: rt-untagged 7
  CONSTANT: rt-megamorphic-cache-hits 8
  CONSTANT: rt-vm 9
  CONSTANT: rt-cards-offset 10
  CONSTANT: rt-decks-offset 11
  CONSTANT: rt-exception-handler 12
  CONSTANT: rt-dlsym-toc 13
  CONSTANT: rt-inline-cache-miss 14
  CONSTANT: rt-safepoint 15
 
  So far I've only encountered rt-here and I've only seen it encoded into a
  relocation entry and not really used anywhere yet.  But this strikes me as
  the kind of thing it would be useful to know as I am slogging through this
  stuff.
 
  Not a hugely pressing question, as I'm sure I'll muddle through it.  But if
  anyone has a moment to illuminate, it would be nice.
 
 Those are relocation record types. When the compiler generates code
 for a word, it also needs to generate relocation entries every time it
 references another word in a jump or call statement, much like a
 native C compiler needs to do for symbols in other modules.
 The VM uses these relocation entries to update the operands of jump
 and call instructions when code is written to the code heap, when the
 code heap is compacted, or if code is moved in memory for any reason.
 The different rt-* constants are used to describe what kind of object
 a relocation refers to, such as a foreign function in a DLL (dlsym), a
 word entry point (entry-point-*), the current address (here), etc.
 
 -Joe
 
 --
 Live Security Virtual Conference
 Exclusive live event will cover all the ways today's security and 
 threat landscape has changed and how IT managers can respond. Discussions 
 will include endpoint security, mobile security and the latest in malware 
 threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
 ___
 Factor-talk mailing list
 Factor-talk@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/factor-talk
  

--
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
___
Factor-talk mailing list
Factor-talk@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/factor-talk
  --
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/___
Factor-talk mailing list
Factor-talk@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/factor-talk


Re: [Factor-talk] Any way of making sense of what's in the boot image?

2012-08-10 Thread Michael Clagett


  P.S.   Incidentally, while I am on the subject, I find myself able to trace
  through the VM startup code in Visual Studio with no problem at all, until I
  get to the factor_vm::c_to_factor, which wraps a c-to-factor sub-primitive
  inside of a callback stub and then invokes that function.  On both a Windows
  7 platform and a Windows Server 2008 platform, my Visual Studio blows up
  when the callback address loaded into EDX is called.  Anybody ever
  encountered this and any idea how to get around it?
 
 Factor code doesn't follow the C calling convention so it's unlikely
 that a debugger will be able to walk a stack with Factor frames. In
 recent versions of Factor you can trigger Factor's own low-level
 debugger with ^C, which will let you backtrace and step through Factor
 frames.
 
 -Joe
 
If I'm understanding this correctly, you are suggesting that if I'm in the 
Factor development environment, I can drop into Factor's own low-level 
debugger.  But what do people do (you language maintainer, for example) when 
you need to debug the startup code that builds an image that needs to be in 
place for the development environment even to be launched?  Am I correctly 
understanding you, that I can't use a Windows debugger to step through the init 
sequence, but don't have Factor's debugger available yet either?  Or am I 
missing something? Any insights would be greatly appreciated.   
  --
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/___
Factor-talk mailing list
Factor-talk@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/factor-talk


Re: [Factor-talk] Any way of making sense of what's in the boot image?

2012-08-10 Thread Michael Clagett

Not a problem any more.  WinDbg does the trick just fine.  It was just Visual 
Studio.
 From: mclag...@hotmail.com
To: factor-talk@lists.sourceforge.net
Date: Fri, 10 Aug 2012 11:51:00 +
Subject: Re: [Factor-talk] Any way of making sense of what's in the boot image?






  P.S.   Incidentally, while I am on the subject, I find myself able to trace
  through the VM startup code in Visual Studio with no problem at all, until I
  get to the factor_vm::c_to_factor, which wraps a c-to-factor sub-primitive
  inside of a callback stub and then invokes that function.  On both a Windows
  7 platform and a Windows Server 2008 platform, my Visual Studio blows up
  when the callback address loaded into EDX is called.  Anybody ever
  encountered this and any idea how to get around it?
 
 Factor code doesn't follow the C calling convention so it's unlikely
 that a debugger will be able to walk a stack with Factor frames. In
 recent versions of Factor you can trigger Factor's own low-level
 debugger with ^C, which will let you backtrace and step through Factor
 frames.
 
 -Joe
 

If I'm understanding this correctly, you are suggesting that if I'm in the 
Factor development environment, I can drop into Factor's own low-level 
debugger.  But what do people do (you language maintainer, for example) when 
you need to debug the startup code that builds an image that needs to be in 
place for the development environment even to be launched?  Am I correctly 
understanding you, that I can't use a Windows debugger to step through the init 
sequence, but don't have Factor's debugger available yet either?  Or am I 
missing something?
 
Any insights would be greatly appreciated.
  

--
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
___
Factor-talk mailing list
Factor-talk@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/factor-talk
  --
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/___
Factor-talk mailing list
Factor-talk@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/factor-talk


Re: [Factor-talk] Any way of making sense of what's in the boot image?

2012-08-10 Thread John Benediktsson
You might also find it useful to try the Walker which allows you to step
through Factor code:

http://docs.factorcode.org/content/article-ui-walker.html



On Fri, Aug 10, 2012 at 10:29 AM, Michael Clagett mclag...@hotmail.comwrote:

  Not a problem any more.  WinDbg does the trick just fine.  It was just
 Visual Studio.

 --
 From: mclag...@hotmail.com
 To: factor-talk@lists.sourceforge.net
 Date: Fri, 10 Aug 2012 11:51:00 +

 Subject: Re: [Factor-talk] Any way of making sense of what's in the boot
 image?


   P.S. Incidentally, while I am on the subject, I find myself able to
 trace
   through the VM startup code in Visual Studio with no problem at all,
 until I
   get to the factor_vm::c_to_factor, which wraps a c-to-factor
 sub-primitive
   inside of a callback stub and then invokes that function. On both a
 Windows
   7 platform and a Windows Server 2008 platform, my Visual Studio blows
 up
   when the callback address loaded into EDX is called. Anybody ever
   encountered this and any idea how to get around it?
 
  Factor code doesn't follow the C calling convention so it's unlikely
  that a debugger will be able to walk a stack with Factor frames. In
  recent versions of Factor you can trigger Factor's own low-level
  debugger with ^C, which will let you backtrace and step through Factor
  frames.
 
  -Joe
 

 If I'm understanding this correctly, you are suggesting that if I'm in the
 Factor development environment, I can drop into Factor's own low-level
 debugger.  But what do people do (you language maintainer, for example)
 when you need to debug the startup code that builds an image that needs to
 be in place for the development environment even to be launched?  Am I
 correctly understanding you, that I can't use a Windows debugger to step
 through the init sequence, but don't have Factor's debugger available yet
 either?  Or am I missing something?

 Any insights would be greatly appreciated.

 --
 Live Security Virtual Conference Exclusive live event will cover all the
 ways today's security and threat landscape has changed and how IT managers
 can respond. Discussions will include endpoint security, mobile security
 and the latest in malware threats.
 http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
 ___ Factor-talk mailing list
 Factor-talk@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/factor-talk


 --
 Live Security Virtual Conference
 Exclusive live event will cover all the ways today's security and
 threat landscape has changed and how IT managers can respond. Discussions
 will include endpoint security, mobile security and the latest in malware
 threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
 ___
 Factor-talk mailing list
 Factor-talk@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/factor-talk


--
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/___
Factor-talk mailing list
Factor-talk@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/factor-talk


Re: [Factor-talk] Any way of making sense of what's in the boot image?

2012-08-10 Thread Michael Clagett

Thanks for the reference.  I assume that will be helpful once I get past 
stepping through the bootstrapping code and am in the Listener 
environment.From: mrj...@gmail.com
Date: Fri, 10 Aug 2012 10:40:28 -0700
To: factor-talk@lists.sourceforge.net
Subject: Re: [Factor-talk] Any way of making sense of what's in the boot
image?

You might also find it useful to try the Walker which allows you to step 
through Factor code:
http://docs.factorcode.org/content/article-ui-walker.html




On Fri, Aug 10, 2012 at 10:29 AM, Michael Clagett mclag...@hotmail.com wrote:






Not a problem any more.  WinDbg does the trick just fine.  It was just Visual 
Studio.
 
From: mclag...@hotmail.com


To: factor-talk@lists.sourceforge.net
Date: Fri, 10 Aug 2012 11:51:00 +
Subject: Re: [Factor-talk] Any way of making sense of what's in the boot image?








  P.S.   Incidentally, while I am on the subject, I find myself able to trace
  through the VM startup code in Visual Studio with no problem at all, until I
  get to the factor_vm::c_to_factor, which wraps a c-to-factor sub-primitive


  inside of a callback stub and then invokes that function.  On both a Windows
  7 platform and a Windows Server 2008 platform, my Visual Studio blows up
  when the callback address loaded into EDX is called.  Anybody ever


  encountered this and any idea how to get around it?
 
 Factor code doesn't follow the C calling convention so it's unlikely
 that a debugger will be able to walk a stack with Factor frames. In


 recent versions of Factor you can trigger Factor's own low-level
 debugger with ^C, which will let you backtrace and step through Factor
 frames.
 
 -Joe
 

If I'm understanding this correctly, you are suggesting that if I'm in the 
Factor development environment, I can drop into Factor's own low-level 
debugger.  But what do people do (you language maintainer, for example) when 
you need to debug the startup code that builds an image that needs to be in 
place for the development environment even to be launched?  Am I correctly 
understanding you, that I can't use a Windows debugger to step through the init 
sequence, but don't have Factor's debugger available yet either?  Or am I 
missing something?


 
Any insights would be greatly appreciated.
  

--
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
___
Factor-talk mailing list
Factor-talk@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/factor-talk
  

--

Live Security Virtual Conference

Exclusive live event will cover all the ways today's security and

threat landscape has changed and how IT managers can respond. Discussions

will include endpoint security, mobile security and the latest in malware

threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
___

Factor-talk mailing list

Factor-talk@lists.sourceforge.net

https://lists.sourceforge.net/lists/listinfo/factor-talk





--
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
___
Factor-talk mailing list
Factor-talk@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/factor-talk
  --
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/___
Factor-talk mailing list
Factor-talk@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/factor-talk


Re: [Factor-talk] Any way of making sense of what's in the boot image?

2012-08-10 Thread Michael Clagett

Hi -- I've been trying to run the make-image word from the Listener and got as 
far as this trace: IN: scratchpad Command: restart
1: Note:
Added bootstrap.image vocabulary to search path
x86.32 make-image
Loading resource:/core/bootstrap/stage1.factor
Bootstrap stage 1...
Loading vocab:bootstrap/primitives.factor
Creating primitives and basic runtime structures...
Loading vocab:bootstrap/syntax.factor
 From Traceback: Data Stack: [ ~quotation~ with-compilation-unit ]Bad 
architecture: x86.32 Call Stack: (U)
Quotation: [ set-namestack init-catchstack self quot call - stop ]
(O)
Word: listener-thread
(O)
Word: listener
(O)
Word: (listener)
(U)
Quotation: [
[ ~quotation~ dip swap ~quotation~ dip ] dip swap
[ call datastack ] dip - swap [ set-datastack ] dip
]
(U)
Quotation: [ call - datastack ]
(O)
Word: make-image
(U)
Quotation: [
Bootstrap stage 1... print
flush vocab:bootstrap/primitives.factor run-file
- load-help? off { resource:core } vocab-roots set [
~quotation~ % math.integers require
math.floats require memory require
io.streams.c require vocabs.loader require
syntax require bootstrap.layouts require
~quotation~ %
] [ ] make bootstrap-startup-quot set
]
(U)
Quotation: [
Creating primitives and basic runtime structures... print
flush H{ } clone sub-primitives set
vocab:bootstrap/syntax.factor parse-file architecture get
{ ~array~ ~array~ ~array~ ~array~ ~array~ ~array~ } ?at
[ Bad architecture:  prepend throw ] unless
- vocab:cpu/ /bootstrap.factor surround
parse-file vocab:bootstrap/layouts/layouts.factor
parse-file syntax lookup-vocab vocab-words
bootstrap-syntax set H{ } clone dictionary set
H{ } clone root-cache set H{ } clone source-files set
H{ } clone update-map set H{ } clone implementors-map set
init-caches bootstrapping? on ( -- ) call-effect
( -- ) call-effect accessors create-vocab drop
num-types get f array builtins set [
( -- ) call-effect ~array~ ~quotation~ each
fixnum math create register-builtin
bignum math create register-builtin
tuple kernel create register-builtin
float math create register-builtin
f syntax lookup-word register-builtin
array arrays create register-builtin
wrapper kernel create register-builtin
callstack kernel create register-builtin
string strings create register-builtin
quotation quotations create register-builtin
dll alien create register-builtin
alien alien create register-builtin
word words create register-builtin
byte-array byte-arrays create register-builtin
f syntax lookup-word ~array~ define-builtin
f syntax create
~quotation~ predicate set-word-prop
f? syntax vocab-words delete-at
t syntax lookup-word define-singleton-class
c-ptr alien create ~quotation~ ~array~ make
define-union-class
array-capacity sequences.private create
fixnum math lookup-word
~quotation~ ~quotation~ make define-predicate-class
array-capacity sequences.private lookup-word
~195 more~
] with-compilation-unit
]
(O)
Method: M\ object throw
(U)
Quotation: [
OBJ-CURRENT-THREAD special-object error-thread set-global
current-continuation - error-continuation set-global
[ original-error set-global ] [ rethrow ] bi
]
Anyone have any ideas?  From: mclag...@hotmail.com
To: factor-talk@lists.sourceforge.net
Date: Fri, 10 Aug 2012 17:50:12 +
Subject: Re: [Factor-talk] Any way of making sense of what's in the boot image?





Thanks for the reference.  I assume that will be helpful once I get past 
stepping through the bootstrapping code and am in the Listener environment.
From: mrj...@gmail.com
Date: Fri, 10 Aug 2012 10:40:28 -0700
To: factor-talk@lists.sourceforge.net
Subject: Re: [Factor-talk] Any way of making sense of what's in the boot
image?

You might also find it useful to try the Walker which allows you to step 
through Factor code:
http://docs.factorcode.org/content/article-ui-walker.html




On Fri, Aug 10, 2012 at 10:29 AM, Michael Clagett mclag...@hotmail.com wrote:






Not a problem any more.  WinDbg does the trick just fine.  It was just Visual 
Studio.
 
From: mclag...@hotmail.com


To: factor-talk@lists.sourceforge.net
Date: Fri, 10 Aug 2012 11:51:00 +
Subject: Re: [Factor-talk] Any way of making sense of what's in the boot image?








  P.S.   Incidentally, while I am on the subject, I find myself able to trace
  through the VM startup code in Visual Studio with no problem at all, until I
  get to the factor_vm::c_to_factor, which wraps a c-to-factor sub-primitive


  inside of a callback stub and then invokes that function.  On both a Windows
  7 platform and a Windows Server 2008 platform, my Visual Studio blows up
  when the callback address loaded into EDX is called.  Anybody ever


  encountered this and 

Re: [Factor-talk] Any way of making sense of what's in the boot image?

2012-08-10 Thread John Benediktsson
Typically the architecture is a combination of os and arch:

IN: scratchpad my-arch .
unix-x86.64

You can use the my-arch word to make an image for your architecture:

IN: scratchpad my-arch make-image



On Fri, Aug 10, 2012 at 1:56 PM, Michael Clagett mclag...@hotmail.comwrote:

  Hi --

 I've been trying to run the make-image word from the Listener and got as
 far as this trace:

 IN: scratchpad Command: restart
 1: Note:
 Added bootstrap.image vocabulary to search path
 x86.32 make-image
 Loading resource:/core/bootstrap/stage1.factor
 Bootstrap stage 1...
 Loading vocab:bootstrap/primitives.factor
 Creating primitives and basic runtime structures...
 Loading vocab:bootstrap/syntax.factor

 From Traceback:

 Data Stack:

 [ ~quotation~ with-compilation-unit ]
 Bad architecture: x86.32

 Call Stack:

 (U)
 Quotation: [ set-namestack init-catchstack self quot call - stop ]
 (O)
 Word: listener-thread
 (O)
 Word: listener
 (O)
 Word: (listener)
 (U)
 Quotation: [
 [ ~quotation~ dip swap ~quotation~ dip ] dip swap
 [ call datastack ] dip - swap [ set-datastack ] dip
 ]
 (U)
 Quotation: [ call - datastack ]
 (O)
 Word: make-image
 (U)
 Quotation: [
 Bootstrap stage 1... print
 flush vocab:bootstrap/primitives.factor run-file
 - load-help? off { resource:core } vocab-roots set [
 ~quotation~ % math.integers require
 math.floats require memory require
 io.streams.c require vocabs.loader require
 syntax require bootstrap.layouts require
 ~quotation~ %
 ] [ ] make bootstrap-startup-quot set
 ]
 (U)
 Quotation: [
 Creating primitives and basic runtime structures... print
 flush H{ } clone sub-primitives set
 vocab:bootstrap/syntax.factor parse-file architecture get
 { ~array~ ~array~ ~array~ ~array~ ~array~ ~array~ } ?at
 [ Bad architecture:  prepend throw ] unless
 - vocab:cpu/ /bootstrap.factor surround
 parse-file vocab:bootstrap/layouts/layouts.factor
 parse-file syntax lookup-vocab vocab-words
 bootstrap-syntax set H{ } clone dictionary set
 H{ } clone root-cache set H{ } clone source-files set
 H{ } clone update-map set H{ } clone implementors-map set
 init-caches bootstrapping? on ( -- ) call-effect
 ( -- ) call-effect accessors create-vocab drop
 num-types get f array builtins set [
 ( -- ) call-effect ~array~ ~quotation~ each
 fixnum math create register-builtin
 bignum math create register-builtin
 tuple kernel create register-builtin
 float math create register-builtin
 f syntax lookup-word register-builtin
 array arrays create register-builtin
 wrapper kernel create register-builtin
 callstack kernel create register-builtin
 string strings create register-builtin
 quotation quotations create register-builtin
 dll alien create register-builtin
 alien alien create register-builtin
 word words create register-builtin
 byte-array byte-arrays create register-builtin
 f syntax lookup-word ~array~ define-builtin
 f syntax create
 ~quotation~ predicate set-word-prop
 f? syntax vocab-words delete-at
 t syntax lookup-word define-singleton-class
 c-ptr alien create ~quotation~ ~array~ make
 define-union-class
 array-capacity sequences.private create
 fixnum math lookup-word
 ~quotation~ ~quotation~ make define-predicate-class
 array-capacity sequences.private lookup-word
 ~195 more~
 ] with-compilation-unit
 ]
 (O)
 Method: M\ object throw
 (U)
 Quotation: [
 OBJ-CURRENT-THREAD special-object error-thread set-global
 current-continuation *-* error-continuation set-global
 [ original-error set-global ] [ rethrow ] bi
 ]

 Anyone have any ideas?


 --
 From: mclag...@hotmail.com
 To: factor-talk@lists.sourceforge.net
 Date: Fri, 10 Aug 2012 17:50:12 +

 Subject: Re: [Factor-talk] Any way of making sense of what's in the boot
 image?

  Thanks for the reference.  I assume that will be helpful once I get past
 stepping through the bootstrapping code and am in the Listener environment.
 --
 From: mrj...@gmail.com
 Date: Fri, 10 Aug 2012 10:40:28 -0700
 To: factor-talk@lists.sourceforge.net
 Subject: Re: [Factor-talk] Any way of making sense of what's in the boot
 image?

 You might also find it useful to try the Walker which allows you to step
 through Factor code:

 http://docs.factorcode.org/content/article-ui-walker.html



 On Fri, Aug 10, 2012 at 10:29 AM, Michael Clagett mclag...@hotmail.comwrote:

  Not a problem any more.  WinDbg does the trick just fine.  It was just
 Visual Studio.

 --
 From: mclag...@hotmail.com
 To: factor-talk@lists.sourceforge.net
 Date: Fri, 10 Aug 2012 11:51:00 +

 Subject: Re: [Factor-talk] Any way of making sense of what's in the 

Re: [Factor-talk] Any way of making sense of what's in the boot image?

2012-08-10 Thread Michael Clagett

Beautiful.  Worked like a charm.   Thanks.
 From: mrj...@gmail.com
Date: Fri, 10 Aug 2012 14:01:58 -0700
To: factor-talk@lists.sourceforge.net
Subject: Re: [Factor-talk] Any way of making sense of what's in the boot
image?

Typically the architecture is a combination of os and arch:
IN: scratchpad my-arch .unix-x86.64
You can use the my-arch word to make an image for your architecture:


IN: scratchpad my-arch make-image


On Fri, Aug 10, 2012 at 1:56 PM, Michael Clagett mclag...@hotmail.com wrote:






Hi --
 
I've been trying to run the make-image word from the Listener and got as far as 
this trace:
 
IN: scratchpad Command: restart
1: Note:
Added bootstrap.image vocabulary to search path


x86.32 make-image
Loading resource:/core/bootstrap/stage1.factor
Bootstrap stage 1...
Loading vocab:bootstrap/primitives.factor
Creating primitives and basic runtime structures...
Loading vocab:bootstrap/syntax.factor


 
From Traceback:
 
Data Stack:
 
[ ~quotation~ with-compilation-unit ]
Bad architecture: x86.32
 
Call Stack:
 
(U)
Quotation: [ set-namestack init-catchstack self quot call - stop ]


(O)
Word: listener-thread
(O)
Word: listener
(O)
Word: (listener)
(U)
Quotation: [
[ ~quotation~ dip swap ~quotation~ dip ] dip swap
[ call datastack ] dip - swap [ set-datastack ] dip


]
(U)
Quotation: [ call - datastack ]
(O)
Word: make-image
(U)
Quotation: [
Bootstrap stage 1... print
flush vocab:bootstrap/primitives.factor run-file
- load-help? off { resource:core } vocab-roots set [


~quotation~ % math.integers require
math.floats require memory require
io.streams.c require vocabs.loader require
syntax require bootstrap.layouts require


~quotation~ %
] [ ] make bootstrap-startup-quot set
]
(U)
Quotation: [
Creating primitives and basic runtime structures... print
flush H{ } clone sub-primitives set
vocab:bootstrap/syntax.factor parse-file architecture get


{ ~array~ ~array~ ~array~ ~array~ ~array~ ~array~ } ?at
[ Bad architecture:  prepend throw ] unless
- vocab:cpu/ /bootstrap.factor surround
parse-file vocab:bootstrap/layouts/layouts.factor


parse-file syntax lookup-vocab vocab-words
bootstrap-syntax set H{ } clone dictionary set
H{ } clone root-cache set H{ } clone source-files set
H{ } clone update-map set H{ } clone implementors-map set


init-caches bootstrapping? on ( -- ) call-effect
( -- ) call-effect accessors create-vocab drop
num-types get f array builtins set [
( -- ) call-effect ~array~ ~quotation~ each


fixnum math create register-builtin
bignum math create register-builtin
tuple kernel create register-builtin
float math create register-builtin


f syntax lookup-word register-builtin
array arrays create register-builtin
wrapper kernel create register-builtin
callstack kernel create register-builtin


string strings create register-builtin
quotation quotations create register-builtin
dll alien create register-builtin


alien alien create register-builtin
word words create register-builtin
byte-array byte-arrays create register-builtin


f syntax lookup-word ~array~ define-builtin
f syntax create
~quotation~ predicate set-word-prop
f? syntax vocab-words delete-at


t syntax lookup-word define-singleton-class
c-ptr alien create ~quotation~ ~array~ make
define-union-class
array-capacity sequences.private create


fixnum math lookup-word
~quotation~ ~quotation~ make define-predicate-class
array-capacity sequences.private lookup-word
~195 more~


] with-compilation-unit
]
(O)
Method: M\ object throw
(U)
Quotation: [
OBJ-CURRENT-THREAD special-object error-thread set-global
current-continuation - error-continuation set-global


[ original-error set-global ] [ rethrow ] bi
]

Anyone have any ideas?
 
 
From: mclag...@hotmail.com


To: factor-talk@lists.sourceforge.net
Date: Fri, 10 Aug 2012 17:50:12 +
Subject: Re: [Factor-talk] Any way of making sense of what's in the boot image?







Thanks for the reference.  I assume that will be helpful once I get past 
stepping through the bootstrapping code and am in the Listener environment.
From: mrj...@gmail.com


Date: Fri, 10 Aug 2012 10:40:28 -0700
To: factor-talk@lists.sourceforge.net
Subject: Re: [Factor-talk] Any way of making sense of what's in the boot
image?



You might also find it useful to try the Walker which allows you to step 
through Factor code:
http://docs.factorcode.org/content/article-ui-walker.html






On Fri, Aug 10, 2012 at 10:29 AM, Michael Clagett mclag...@hotmail.com wrote:






Not a problem any more.  WinDbg does the trick just fine.  It was just Visual 
Studio.
 
From: mclag...@hotmail.com


To: factor-talk@lists.sourceforge.net
Date: Fri, 10 

Re: [Factor-talk] Any way of making sense of what's in the boot image?

2012-08-10 Thread Michael Clagett

Quick question, if you're still on the horn.   How do I trace into myarch 
make-image from the Listener.  If I hit enter it just executes.  I'm sure there 
must be any easy way to step into it, which I'm sure I can find by searching 
the documentation.  But perhaps you could save me five minutes.
 From: mrj...@gmail.com
Date: Fri, 10 Aug 2012 14:01:58 -0700
To: factor-talk@lists.sourceforge.net
Subject: Re: [Factor-talk] Any way of making sense of what's in the boot
image?

Typically the architecture is a combination of os and arch:
IN: scratchpad my-arch .unix-x86.64
You can use the my-arch word to make an image for your architecture:


IN: scratchpad my-arch make-image


On Fri, Aug 10, 2012 at 1:56 PM, Michael Clagett mclag...@hotmail.com wrote:






Hi --
 
I've been trying to run the make-image word from the Listener and got as far as 
this trace:
 
IN: scratchpad Command: restart
1: Note:
Added bootstrap.image vocabulary to search path


x86.32 make-image
Loading resource:/core/bootstrap/stage1.factor
Bootstrap stage 1...
Loading vocab:bootstrap/primitives.factor
Creating primitives and basic runtime structures...
Loading vocab:bootstrap/syntax.factor


 
From Traceback:
 
Data Stack:
 
[ ~quotation~ with-compilation-unit ]
Bad architecture: x86.32
 
Call Stack:
 
(U)
Quotation: [ set-namestack init-catchstack self quot call - stop ]


(O)
Word: listener-thread
(O)
Word: listener
(O)
Word: (listener)
(U)
Quotation: [
[ ~quotation~ dip swap ~quotation~ dip ] dip swap
[ call datastack ] dip - swap [ set-datastack ] dip


]
(U)
Quotation: [ call - datastack ]
(O)
Word: make-image
(U)
Quotation: [
Bootstrap stage 1... print
flush vocab:bootstrap/primitives.factor run-file
- load-help? off { resource:core } vocab-roots set [


~quotation~ % math.integers require
math.floats require memory require
io.streams.c require vocabs.loader require
syntax require bootstrap.layouts require


~quotation~ %
] [ ] make bootstrap-startup-quot set
]
(U)
Quotation: [
Creating primitives and basic runtime structures... print
flush H{ } clone sub-primitives set
vocab:bootstrap/syntax.factor parse-file architecture get


{ ~array~ ~array~ ~array~ ~array~ ~array~ ~array~ } ?at
[ Bad architecture:  prepend throw ] unless
- vocab:cpu/ /bootstrap.factor surround
parse-file vocab:bootstrap/layouts/layouts.factor


parse-file syntax lookup-vocab vocab-words
bootstrap-syntax set H{ } clone dictionary set
H{ } clone root-cache set H{ } clone source-files set
H{ } clone update-map set H{ } clone implementors-map set


init-caches bootstrapping? on ( -- ) call-effect
( -- ) call-effect accessors create-vocab drop
num-types get f array builtins set [
( -- ) call-effect ~array~ ~quotation~ each


fixnum math create register-builtin
bignum math create register-builtin
tuple kernel create register-builtin
float math create register-builtin


f syntax lookup-word register-builtin
array arrays create register-builtin
wrapper kernel create register-builtin
callstack kernel create register-builtin


string strings create register-builtin
quotation quotations create register-builtin
dll alien create register-builtin


alien alien create register-builtin
word words create register-builtin
byte-array byte-arrays create register-builtin


f syntax lookup-word ~array~ define-builtin
f syntax create
~quotation~ predicate set-word-prop
f? syntax vocab-words delete-at


t syntax lookup-word define-singleton-class
c-ptr alien create ~quotation~ ~array~ make
define-union-class
array-capacity sequences.private create


fixnum math lookup-word
~quotation~ ~quotation~ make define-predicate-class
array-capacity sequences.private lookup-word
~195 more~


] with-compilation-unit
]
(O)
Method: M\ object throw
(U)
Quotation: [
OBJ-CURRENT-THREAD special-object error-thread set-global
current-continuation - error-continuation set-global


[ original-error set-global ] [ rethrow ] bi
]

Anyone have any ideas?
 
 
From: mclag...@hotmail.com


To: factor-talk@lists.sourceforge.net
Date: Fri, 10 Aug 2012 17:50:12 +
Subject: Re: [Factor-talk] Any way of making sense of what's in the boot image?







Thanks for the reference.  I assume that will be helpful once I get past 
stepping through the bootstrapping code and am in the Listener environment.
From: mrj...@gmail.com


Date: Fri, 10 Aug 2012 10:40:28 -0700
To: factor-talk@lists.sourceforge.net
Subject: Re: [Factor-talk] Any way of making sense of what's in the boot
image?



You might also find it useful to try the Walker which allows you to step 
through Factor code:
http://docs.factorcode.org/content/article-ui-walker.html







Re: [Factor-talk] Any way of making sense of what's in the boot image?

2012-08-10 Thread John Benediktsson
Write my-arch make-image in listener.

Then type Ctrl-W to walk it.

Step across my-arch

Into into make-image

Rinse, repeat.  :)


On Fri, Aug 10, 2012 at 2:08 PM, Michael Clagett mclag...@hotmail.comwrote:

  Quick question, if you're still on the horn.   How do I trace into myarch
 make-image from the Listener.  If I hit enter it just executes.  I'm sure
 there must be any easy way to step into it, which I'm sure I can find by
 searching the documentation.  But perhaps you could save me five minutes.

 --
 From: mrj...@gmail.com
 Date: Fri, 10 Aug 2012 14:01:58 -0700

 To: factor-talk@lists.sourceforge.net
 Subject: Re: [Factor-talk] Any way of making sense of what's in the boot
 image?

 Typically the architecture is a combination of os and arch:

 IN: scratchpad my-arch .
 unix-x86.64

 You can use the my-arch word to make an image for your architecture:

 IN: scratchpad my-arch make-image



 On Fri, Aug 10, 2012 at 1:56 PM, Michael Clagett mclag...@hotmail.comwrote:

  Hi --

 I've been trying to run the make-image word from the Listener and got as
 far as this trace:

 IN: scratchpad Command: restart
 1: Note:
 Added bootstrap.image vocabulary to search path
 x86.32 make-image
 Loading resource:/core/bootstrap/stage1.factor
 Bootstrap stage 1...
 Loading vocab:bootstrap/primitives.factor
 Creating primitives and basic runtime structures...
 Loading vocab:bootstrap/syntax.factor

 From Traceback:

 Data Stack:

 [ ~quotation~ with-compilation-unit ]
 Bad architecture: x86.32

 Call Stack:

 (U)
 Quotation: [ set-namestack init-catchstack self quot call - stop ]
 (O)
 Word: listener-thread
 (O)
 Word: listener
 (O)
 Word: (listener)
 (U)
 Quotation: [
 [ ~quotation~ dip swap ~quotation~ dip ] dip swap
 [ call datastack ] dip - swap [ set-datastack ] dip
 ]
 (U)
 Quotation: [ call - datastack ]
 (O)
 Word: make-image
 (U)
 Quotation: [
 Bootstrap stage 1... print
 flush vocab:bootstrap/primitives.factor run-file
 - load-help? off { resource:core } vocab-roots set [
 ~quotation~ % math.integers require
 math.floats require memory require
 io.streams.c require vocabs.loader require
 syntax require bootstrap.layouts require
 ~quotation~ %
 ] [ ] make bootstrap-startup-quot set
 ]
 (U)
 Quotation: [
 Creating primitives and basic runtime structures... print
 flush H{ } clone sub-primitives set
 vocab:bootstrap/syntax.factor parse-file architecture get
 { ~array~ ~array~ ~array~ ~array~ ~array~ ~array~ } ?at
 [ Bad architecture:  prepend throw ] unless
 - vocab:cpu/ /bootstrap.factor surround
 parse-file vocab:bootstrap/layouts/layouts.factor
 parse-file syntax lookup-vocab vocab-words
 bootstrap-syntax set H{ } clone dictionary set
 H{ } clone root-cache set H{ } clone source-files set
 H{ } clone update-map set H{ } clone implementors-map set
 init-caches bootstrapping? on ( -- ) call-effect
 ( -- ) call-effect accessors create-vocab drop
 num-types get f array builtins set [
 ( -- ) call-effect ~array~ ~quotation~ each
 fixnum math create register-builtin
 bignum math create register-builtin
 tuple kernel create register-builtin
 float math create register-builtin
 f syntax lookup-word register-builtin
 array arrays create register-builtin
 wrapper kernel create register-builtin
 callstack kernel create register-builtin
 string strings create register-builtin
 quotation quotations create register-builtin
 dll alien create register-builtin
 alien alien create register-builtin
 word words create register-builtin
 byte-array byte-arrays create register-builtin
 f syntax lookup-word ~array~ define-builtin
 f syntax create
 ~quotation~ predicate set-word-prop
 f? syntax vocab-words delete-at
 t syntax lookup-word define-singleton-class
 c-ptr alien create ~quotation~ ~array~ make
 define-union-class
 array-capacity sequences.private create
 fixnum math lookup-word
 ~quotation~ ~quotation~ make define-predicate-class
 array-capacity sequences.private lookup-word
 ~195 more~
 ] with-compilation-unit
 ]
 (O)
 Method: M\ object throw
 (U)
 Quotation: [
 OBJ-CURRENT-THREAD special-object error-thread set-global
 current-continuation *-* error-continuation set-global
 [ original-error set-global ] [ rethrow ] bi
 ]

 Anyone have any ideas?


 --
 From: mclag...@hotmail.com
 To: factor-talk@lists.sourceforge.net
 Date: Fri, 10 Aug 2012 17:50:12 +

 Subject: Re: [Factor-talk] Any way of making sense of what's in the boot
 image?

  Thanks for the reference.  I assume that will be helpful once I get past
 stepping through the bootstrapping code and am in the Listener environment.
 

Re: [Factor-talk] Any way of making sense of what's in the boot image?

2012-08-10 Thread Michael Clagett

Thanks much.  This should keep me occupied and out of everyone's hair for a 
while.
 From: mrj...@gmail.com
Date: Fri, 10 Aug 2012 14:10:41 -0700
To: factor-talk@lists.sourceforge.net
Subject: Re: [Factor-talk] Any way of making sense of what's in the boot
image?

Write my-arch make-image in listener.
Then type Ctrl-W to walk it.
Step across my-arch
Into into make-image


Rinse, repeat.  :)

On Fri, Aug 10, 2012 at 2:08 PM, Michael Clagett mclag...@hotmail.com wrote:






Quick question, if you're still on the horn.   How do I trace into myarch 
make-image from the Listener.  If I hit enter it just executes.  I'm sure there 
must be any easy way to step into it, which I'm sure I can find by searching 
the documentation.  But perhaps you could save me five minutes.


 
From: mrj...@gmail.com
Date: Fri, 10 Aug 2012 14:01:58 -0700
To: factor-talk@lists.sourceforge.net


Subject: Re: [Factor-talk] Any way of making sense of what's in the boot
image?

Typically the architecture is a combination of os and arch:
IN: scratchpad my-arch .unix-x86.64


You can use the my-arch word to make an image for your architecture:


IN: scratchpad my-arch make-image


On Fri, Aug 10, 2012 at 1:56 PM, Michael Clagett mclag...@hotmail.com wrote:








Hi --
 
I've been trying to run the make-image word from the Listener and got as far as 
this trace:
 
IN: scratchpad Command: restart
1: Note:
Added bootstrap.image vocabulary to search path




x86.32 make-image
Loading resource:/core/bootstrap/stage1.factor
Bootstrap stage 1...
Loading vocab:bootstrap/primitives.factor
Creating primitives and basic runtime structures...
Loading vocab:bootstrap/syntax.factor




 
From Traceback:
 
Data Stack:
 
[ ~quotation~ with-compilation-unit ]
Bad architecture: x86.32
 
Call Stack:
 
(U)
Quotation: [ set-namestack init-catchstack self quot call - stop ]




(O)
Word: listener-thread
(O)
Word: listener
(O)
Word: (listener)
(U)
Quotation: [
[ ~quotation~ dip swap ~quotation~ dip ] dip swap
[ call datastack ] dip - swap [ set-datastack ] dip




]
(U)
Quotation: [ call - datastack ]
(O)
Word: make-image
(U)
Quotation: [
Bootstrap stage 1... print
flush vocab:bootstrap/primitives.factor run-file
- load-help? off { resource:core } vocab-roots set [




~quotation~ % math.integers require
math.floats require memory require
io.streams.c require vocabs.loader require
syntax require bootstrap.layouts require




~quotation~ %
] [ ] make bootstrap-startup-quot set
]
(U)
Quotation: [
Creating primitives and basic runtime structures... print
flush H{ } clone sub-primitives set
vocab:bootstrap/syntax.factor parse-file architecture get




{ ~array~ ~array~ ~array~ ~array~ ~array~ ~array~ } ?at
[ Bad architecture:  prepend throw ] unless
- vocab:cpu/ /bootstrap.factor surround
parse-file vocab:bootstrap/layouts/layouts.factor




parse-file syntax lookup-vocab vocab-words
bootstrap-syntax set H{ } clone dictionary set
H{ } clone root-cache set H{ } clone source-files set
H{ } clone update-map set H{ } clone implementors-map set




init-caches bootstrapping? on ( -- ) call-effect
( -- ) call-effect accessors create-vocab drop
num-types get f array builtins set [
( -- ) call-effect ~array~ ~quotation~ each




fixnum math create register-builtin
bignum math create register-builtin
tuple kernel create register-builtin
float math create register-builtin




f syntax lookup-word register-builtin
array arrays create register-builtin
wrapper kernel create register-builtin
callstack kernel create register-builtin




string strings create register-builtin
quotation quotations create register-builtin
dll alien create register-builtin




alien alien create register-builtin
word words create register-builtin
byte-array byte-arrays create register-builtin




f syntax lookup-word ~array~ define-builtin
f syntax create
~quotation~ predicate set-word-prop
f? syntax vocab-words delete-at




t syntax lookup-word define-singleton-class
c-ptr alien create ~quotation~ ~array~ make
define-union-class
array-capacity sequences.private create




fixnum math lookup-word
~quotation~ ~quotation~ make define-predicate-class
array-capacity sequences.private lookup-word
~195 more~




] with-compilation-unit
]
(O)
Method: M\ object throw
(U)
Quotation: [
OBJ-CURRENT-THREAD special-object error-thread set-global
current-continuation - error-continuation set-global




[ original-error set-global ] [ rethrow ] bi
]

Anyone have any ideas?
 
 
From: mclag...@hotmail.com


To: factor-talk@lists.sourceforge.net
Date: Fri, 10 Aug 2012 17:50:12 +
Subject: Re: [Factor-talk] Any way of making sense of 

Re: [Factor-talk] Any way of making sense of what's in the boot image?

2012-08-10 Thread John Benediktsson

 Thanks much.  This should keep me occupied and out of everyone's hair for
 a while.


No worries, keep the questions coming!
--
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/___
Factor-talk mailing list
Factor-talk@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/factor-talk


Re: [Factor-talk] Any way of making sense of what's in the boot image?

2012-08-10 Thread Michael Clagett

For anyone else who might happen onto the problem I had, the solution ended up 
being that my architecture was named windows-x86.32, not x86.32.
 From: mrj...@gmail.com
Date: Fri, 10 Aug 2012 14:10:41 -0700
To: factor-talk@lists.sourceforge.net
Subject: Re: [Factor-talk] Any way of making sense of what's in the boot
image?

Write my-arch make-image in listener.
Then type Ctrl-W to walk it.
Step across my-arch
Into into make-image


Rinse, repeat.  :)

On Fri, Aug 10, 2012 at 2:08 PM, Michael Clagett mclag...@hotmail.com wrote:






Quick question, if you're still on the horn.   How do I trace into myarch 
make-image from the Listener.  If I hit enter it just executes.  I'm sure there 
must be any easy way to step into it, which I'm sure I can find by searching 
the documentation.  But perhaps you could save me five minutes.


 
From: mrj...@gmail.com
Date: Fri, 10 Aug 2012 14:01:58 -0700
To: factor-talk@lists.sourceforge.net


Subject: Re: [Factor-talk] Any way of making sense of what's in the boot
image?

Typically the architecture is a combination of os and arch:
IN: scratchpad my-arch .unix-x86.64


You can use the my-arch word to make an image for your architecture:


IN: scratchpad my-arch make-image


On Fri, Aug 10, 2012 at 1:56 PM, Michael Clagett mclag...@hotmail.com wrote:








Hi --
 
I've been trying to run the make-image word from the Listener and got as far as 
this trace:
 
IN: scratchpad Command: restart
1: Note:
Added bootstrap.image vocabulary to search path




x86.32 make-image
Loading resource:/core/bootstrap/stage1.factor
Bootstrap stage 1...
Loading vocab:bootstrap/primitives.factor
Creating primitives and basic runtime structures...
Loading vocab:bootstrap/syntax.factor




 
From Traceback:
 
Data Stack:
 
[ ~quotation~ with-compilation-unit ]
Bad architecture: x86.32
 
Call Stack:
 
(U)
Quotation: [ set-namestack init-catchstack self quot call - stop ]




(O)
Word: listener-thread
(O)
Word: listener
(O)
Word: (listener)
(U)
Quotation: [
[ ~quotation~ dip swap ~quotation~ dip ] dip swap
[ call datastack ] dip - swap [ set-datastack ] dip




]
(U)
Quotation: [ call - datastack ]
(O)
Word: make-image
(U)
Quotation: [
Bootstrap stage 1... print
flush vocab:bootstrap/primitives.factor run-file
- load-help? off { resource:core } vocab-roots set [




~quotation~ % math.integers require
math.floats require memory require
io.streams.c require vocabs.loader require
syntax require bootstrap.layouts require




~quotation~ %
] [ ] make bootstrap-startup-quot set
]
(U)
Quotation: [
Creating primitives and basic runtime structures... print
flush H{ } clone sub-primitives set
vocab:bootstrap/syntax.factor parse-file architecture get




{ ~array~ ~array~ ~array~ ~array~ ~array~ ~array~ } ?at
[ Bad architecture:  prepend throw ] unless
- vocab:cpu/ /bootstrap.factor surround
parse-file vocab:bootstrap/layouts/layouts.factor




parse-file syntax lookup-vocab vocab-words
bootstrap-syntax set H{ } clone dictionary set
H{ } clone root-cache set H{ } clone source-files set
H{ } clone update-map set H{ } clone implementors-map set




init-caches bootstrapping? on ( -- ) call-effect
( -- ) call-effect accessors create-vocab drop
num-types get f array builtins set [
( -- ) call-effect ~array~ ~quotation~ each




fixnum math create register-builtin
bignum math create register-builtin
tuple kernel create register-builtin
float math create register-builtin




f syntax lookup-word register-builtin
array arrays create register-builtin
wrapper kernel create register-builtin
callstack kernel create register-builtin




string strings create register-builtin
quotation quotations create register-builtin
dll alien create register-builtin




alien alien create register-builtin
word words create register-builtin
byte-array byte-arrays create register-builtin




f syntax lookup-word ~array~ define-builtin
f syntax create
~quotation~ predicate set-word-prop
f? syntax vocab-words delete-at




t syntax lookup-word define-singleton-class
c-ptr alien create ~quotation~ ~array~ make
define-union-class
array-capacity sequences.private create




fixnum math lookup-word
~quotation~ ~quotation~ make define-predicate-class
array-capacity sequences.private lookup-word
~195 more~




] with-compilation-unit
]
(O)
Method: M\ object throw
(U)
Quotation: [
OBJ-CURRENT-THREAD special-object error-thread set-global
current-continuation - error-continuation set-global




[ original-error set-global ] [ rethrow ] bi
]

Anyone have any ideas?
 
 
From: mclag...@hotmail.com


To: factor-talk@lists.sourceforge.net
Date: Fri, 10 Aug 2012 17:50:12 

Re: [Factor-talk] Any way of making sense of what's in the boot image?

2012-08-10 Thread Michael Clagett

One more question before I disappear.  I've been tracing through the 
bootstrapping code with WinDbg and am currently in factor_vm::compile_all_words 
where a loop is about to compile 4894 words.  These are accessible as words, 
which in turn can server up their definitions (via word-def).  These are 
quotations, which, like words, display in the debugger inspector as a fairly 
simple structure with a value and parent_slot.   I'm wondering if by some 
small chance there is some way to navigate back to the symbolic name for any 
words that one comes across in this fashion.  Certainly one could get away with 
compiling simply with the type and value and never need the symbolic name, 
which I suspect is what is being done.  So I don't have high hopes, but it 
certainly doesn't hurt to ask.
 From: mclag...@hotmail.com
To: factor-talk@lists.sourceforge.net
Date: Fri, 10 Aug 2012 21:16:40 +
Subject: Re: [Factor-talk] Any way of making sense of what's in the boot image?





For anyone else who might happen onto the problem I had, the solution ended up 
being that my architecture was named windows-x86.32, not x86.32.
 From: mrj...@gmail.com
Date: Fri, 10 Aug 2012 14:10:41 -0700
To: factor-talk@lists.sourceforge.net
Subject: Re: [Factor-talk] Any way of making sense of what's in the boot
image?

Write my-arch make-image in listener.
Then type Ctrl-W to walk it.
Step across my-arch
Into into make-image


Rinse, repeat.  :)

On Fri, Aug 10, 2012 at 2:08 PM, Michael Clagett mclag...@hotmail.com wrote:






Quick question, if you're still on the horn.   How do I trace into myarch 
make-image from the Listener.  If I hit enter it just executes.  I'm sure there 
must be any easy way to step into it, which I'm sure I can find by searching 
the documentation.  But perhaps you could save me five minutes.


 
From: mrj...@gmail.com
Date: Fri, 10 Aug 2012 14:01:58 -0700
To: factor-talk@lists.sourceforge.net


Subject: Re: [Factor-talk] Any way of making sense of what's in the boot
image?

Typically the architecture is a combination of os and arch:
IN: scratchpad my-arch .unix-x86.64


You can use the my-arch word to make an image for your architecture:


IN: scratchpad my-arch make-image


On Fri, Aug 10, 2012 at 1:56 PM, Michael Clagett mclag...@hotmail.com wrote:








Hi --
 
I've been trying to run the make-image word from the Listener and got as far as 
this trace:
 
IN: scratchpad Command: restart
1: Note:
Added bootstrap.image vocabulary to search path




x86.32 make-image
Loading resource:/core/bootstrap/stage1.factor
Bootstrap stage 1...
Loading vocab:bootstrap/primitives.factor
Creating primitives and basic runtime structures...
Loading vocab:bootstrap/syntax.factor




 
From Traceback:
 
Data Stack:
 
[ ~quotation~ with-compilation-unit ]
Bad architecture: x86.32
 
Call Stack:
 
(U)
Quotation: [ set-namestack init-catchstack self quot call - stop ]




(O)
Word: listener-thread
(O)
Word: listener
(O)
Word: (listener)
(U)
Quotation: [
[ ~quotation~ dip swap ~quotation~ dip ] dip swap
[ call datastack ] dip - swap [ set-datastack ] dip




]
(U)
Quotation: [ call - datastack ]
(O)
Word: make-image
(U)
Quotation: [
Bootstrap stage 1... print
flush vocab:bootstrap/primitives.factor run-file
- load-help? off { resource:core } vocab-roots set [




~quotation~ % math.integers require
math.floats require memory require
io.streams.c require vocabs.loader require
syntax require bootstrap.layouts require




~quotation~ %
] [ ] make bootstrap-startup-quot set
]
(U)
Quotation: [
Creating primitives and basic runtime structures... print
flush H{ } clone sub-primitives set
vocab:bootstrap/syntax.factor parse-file architecture get




{ ~array~ ~array~ ~array~ ~array~ ~array~ ~array~ } ?at
[ Bad architecture:  prepend throw ] unless
- vocab:cpu/ /bootstrap.factor surround
parse-file vocab:bootstrap/layouts/layouts.factor




parse-file syntax lookup-vocab vocab-words
bootstrap-syntax set H{ } clone dictionary set
H{ } clone root-cache set H{ } clone source-files set
H{ } clone update-map set H{ } clone implementors-map set




init-caches bootstrapping? on ( -- ) call-effect
( -- ) call-effect accessors create-vocab drop
num-types get f array builtins set [
( -- ) call-effect ~array~ ~quotation~ each




fixnum math create register-builtin
bignum math create register-builtin
tuple kernel create register-builtin
float math create register-builtin




f syntax lookup-word register-builtin
array arrays create register-builtin
wrapper kernel create register-builtin
callstack kernel create register-builtin




string strings create register-builtin
quotation quotations create register-builtin
dll alien create register-builtin




alien alien create register-builtin

Re: [Factor-talk] Any way of making sense of what's in the boot image?

2012-08-10 Thread Doug Coleman
You can do this:

./factor
in the repl: die
then in the shell:
words

It dumps a list of word addresses in Factor.

This works for words, but not quotations.

Hope this helps.

Doug

On Fri, Aug 10, 2012 at 2:55 PM, Michael Clagett mclag...@hotmail.com wrote:
 One more question before I disappear.  I've been tracing through the
 bootstrapping code with WinDbg and am currently in
 factor_vm::compile_all_words where a loop is about to compile 4894 words.
 These are accessible as words, which in turn can server up their definitions
 (via word-def).  These are quotations, which, like words, display in the
 debugger inspector as a fairly simple structure with a value and
 parent_slot.   I'm wondering if by some small chance there is some way to
 navigate back to the symbolic name for any words that one comes across in
 this fashion.  Certainly one could get away with compiling simply with the
 type and value and never need the symbolic name, which I suspect is what is
 being done.  So I don't have high hopes, but it certainly doesn't hurt to
 ask.

 
 From: mclag...@hotmail.com
 To: factor-talk@lists.sourceforge.net
 Date: Fri, 10 Aug 2012 21:16:40 +

 Subject: Re: [Factor-talk] Any way of making sense of what's in the boot
 image?

 For anyone else who might happen onto the problem I had, the solution ended
 up being that my architecture was named windows-x86.32, not x86.32.


 
 From: mrj...@gmail.com
 Date: Fri, 10 Aug 2012 14:10:41 -0700
 To: factor-talk@lists.sourceforge.net
 Subject: Re: [Factor-talk] Any way of making sense of what's in the boot
 image?

 Write my-arch make-image in listener.

 Then type Ctrl-W to walk it.

 Step across my-arch

 Into into make-image

 Rinse, repeat.  :)


 On Fri, Aug 10, 2012 at 2:08 PM, Michael Clagett mclag...@hotmail.com
 wrote:

 Quick question, if you're still on the horn.   How do I trace into myarch
 make-image from the Listener.  If I hit enter it just executes.  I'm sure
 there must be any easy way to step into it, which I'm sure I can find by
 searching the documentation.  But perhaps you could save me five minutes.

 
 From: mrj...@gmail.com
 Date: Fri, 10 Aug 2012 14:01:58 -0700

 To: factor-talk@lists.sourceforge.net
 Subject: Re: [Factor-talk] Any way of making sense of what's in the boot
 image?

 Typically the architecture is a combination of os and arch:

 IN: scratchpad my-arch .
 unix-x86.64

 You can use the my-arch word to make an image for your architecture:

 IN: scratchpad my-arch make-image



 On Fri, Aug 10, 2012 at 1:56 PM, Michael Clagett mclag...@hotmail.com
 wrote:

 Hi --

 I've been trying to run the make-image word from the Listener and got as far
 as this trace:

 IN: scratchpad Command: restart
 1: Note:
 Added bootstrap.image vocabulary to search path
 x86.32 make-image
 Loading resource:/core/bootstrap/stage1.factor
 Bootstrap stage 1...
 Loading vocab:bootstrap/primitives.factor
 Creating primitives and basic runtime structures...
 Loading vocab:bootstrap/syntax.factor

 From Traceback:

 Data Stack:

 [ ~quotation~ with-compilation-unit ]
 Bad architecture: x86.32

 Call Stack:

 (U)
 Quotation: [ set-namestack init-catchstack self quot call - stop ]
 (O)
 Word: listener-thread
 (O)
 Word: listener
 (O)
 Word: (listener)
 (U)
 Quotation: [
 [ ~quotation~ dip swap ~quotation~ dip ] dip swap
 [ call datastack ] dip - swap [ set-datastack ] dip
 ]
 (U)
 Quotation: [ call - datastack ]
 (O)
 Word: make-image
 (U)
 Quotation: [
 Bootstrap stage 1... print
 flush vocab:bootstrap/primitives.factor run-file
 - load-help? off { resource:core } vocab-roots set [
 ~quotation~ % math.integers require
 math.floats require memory require
 io.streams.c require vocabs.loader require
 syntax require bootstrap.layouts require
 ~quotation~ %
 ] [ ] make bootstrap-startup-quot set
 ]
 (U)
 Quotation: [
 Creating primitives and basic runtime structures... print
 flush H{ } clone sub-primitives set
 vocab:bootstrap/syntax.factor parse-file architecture get
 { ~array~ ~array~ ~array~ ~array~ ~array~ ~array~ } ?at
 [ Bad architecture:  prepend throw ] unless
 - vocab:cpu/ /bootstrap.factor surround
 parse-file vocab:bootstrap/layouts/layouts.factor
 parse-file syntax lookup-vocab vocab-words
 bootstrap-syntax set H{ } clone dictionary set
 H{ } clone root-cache set H{ } clone source-files set
 H{ } clone update-map set H{ } clone implementors-map set
 init-caches bootstrapping? on ( -- ) call-effect
 ( -- ) call-effect accessors create-vocab drop
 num-types get f array builtins set [
 ( -- ) call-effect ~array~ ~quotation~ each
 fixnum math create register-builtin
 bignum math create register-builtin
 tuple kernel create register-builtin
 float math create register-builtin
 f 

Re: [Factor-talk] Any way of making sense of what's in the boot image?

2012-08-10 Thread Michael Clagett

Doug, thank you for your help, but I'm afraid I didn't understand everything in 
your response.  Not sure of the context of your instructions.   Not sure, for 
example, what you mean by ./factor (is this something I'm supposed to type 
somewhere?), what you mean by in the repl: die (not sure what the repl is -- 
or what die means for that matter), and then what you mean by the shell.  
Other than that I understood you completely :) .
  Date: Fri, 10 Aug 2012 14:57:51 -0700
 From: doug.cole...@gmail.com
 To: factor-talk@lists.sourceforge.net
 Subject: Re: [Factor-talk] Any way of making sense of what's in the boot  
 image?
 
 You can do this:
 
 ./factor
 in the repl: die
 then in the shell:
 words
 
 It dumps a list of word addresses in Factor.
 
 This works for words, but not quotations.
 
 Hope this helps.
 
 Doug
 
 On Fri, Aug 10, 2012 at 2:55 PM, Michael Clagett mclag...@hotmail.com wrote:
  One more question before I disappear.  I've been tracing through the
  bootstrapping code with WinDbg and am currently in
  factor_vm::compile_all_words where a loop is about to compile 4894 words.
  These are accessible as words, which in turn can server up their definitions
  (via word-def).  These are quotations, which, like words, display in the
  debugger inspector as a fairly simple structure with a value and
  parent_slot.   I'm wondering if by some small chance there is some way to
  navigate back to the symbolic name for any words that one comes across in
  this fashion.  Certainly one could get away with compiling simply with the
  type and value and never need the symbolic name, which I suspect is what is
  being done.  So I don't have high hopes, but it certainly doesn't hurt to
  ask.
 
  
  From: mclag...@hotmail.com
  To: factor-talk@lists.sourceforge.net
  Date: Fri, 10 Aug 2012 21:16:40 +
 
  Subject: Re: [Factor-talk] Any way of making sense of what's in the boot
  image?
 
  For anyone else who might happen onto the problem I had, the solution ended
  up being that my architecture was named windows-x86.32, not x86.32.
 
 
  
  From: mrj...@gmail.com
  Date: Fri, 10 Aug 2012 14:10:41 -0700
  To: factor-talk@lists.sourceforge.net
  Subject: Re: [Factor-talk] Any way of making sense of what's in the boot
  image?
 
  Write my-arch make-image in listener.
 
  Then type Ctrl-W to walk it.
 
  Step across my-arch
 
  Into into make-image
 
  Rinse, repeat.  :)
 
 
  On Fri, Aug 10, 2012 at 2:08 PM, Michael Clagett mclag...@hotmail.com
  wrote:
 
  Quick question, if you're still on the horn.   How do I trace into myarch
  make-image from the Listener.  If I hit enter it just executes.  I'm sure
  there must be any easy way to step into it, which I'm sure I can find by
  searching the documentation.  But perhaps you could save me five minutes.
 
  
  From: mrj...@gmail.com
  Date: Fri, 10 Aug 2012 14:01:58 -0700
 
  To: factor-talk@lists.sourceforge.net
  Subject: Re: [Factor-talk] Any way of making sense of what's in the boot
  image?
 
  Typically the architecture is a combination of os and arch:
 
  IN: scratchpad my-arch .
  unix-x86.64
 
  You can use the my-arch word to make an image for your architecture:
 
  IN: scratchpad my-arch make-image
 
 
 
  On Fri, Aug 10, 2012 at 1:56 PM, Michael Clagett mclag...@hotmail.com
  wrote:
 
  Hi --
 
  I've been trying to run the make-image word from the Listener and got as far
  as this trace:
 
  IN: scratchpad Command: restart
  1: Note:
  Added bootstrap.image vocabulary to search path
  x86.32 make-image
  Loading resource:/core/bootstrap/stage1.factor
  Bootstrap stage 1...
  Loading vocab:bootstrap/primitives.factor
  Creating primitives and basic runtime structures...
  Loading vocab:bootstrap/syntax.factor
 
  From Traceback:
 
  Data Stack:
 
  [ ~quotation~ with-compilation-unit ]
  Bad architecture: x86.32
 
  Call Stack:
 
  (U)
  Quotation: [ set-namestack init-catchstack self quot call - stop ]
  (O)
  Word: listener-thread
  (O)
  Word: listener
  (O)
  Word: (listener)
  (U)
  Quotation: [
  [ ~quotation~ dip swap ~quotation~ dip ] dip swap
  [ call datastack ] dip - swap [ set-datastack ] dip
  ]
  (U)
  Quotation: [ call - datastack ]
  (O)
  Word: make-image
  (U)
  Quotation: [
  Bootstrap stage 1... print
  flush vocab:bootstrap/primitives.factor run-file
  - load-help? off { resource:core } vocab-roots set [
  ~quotation~ % math.integers require
  math.floats require memory require
  io.streams.c require vocabs.loader require
  syntax require bootstrap.layouts require
  ~quotation~ %
  ] [ ] make bootstrap-startup-quot set
  ]
  (U)
  Quotation: [
  Creating primitives and basic runtime structures... print
  flush H{ } clone sub-primitives set
  vocab:bootstrap/syntax.factor parse-file architecture get
  { ~array~ ~array~ ~array~ ~array~ 

Re: [Factor-talk] Any way of making sense of what's in the boot image?

2012-08-10 Thread Doug Coleman
./factor starts Factor from the command-line. If you're on mac, you
get a terminal listener (to start it right, you want to run it from
the app: ./Factor.app/Contents/MacOS/factor); if you're on linux, you
get the UI. In Windows, you run factor.com and it launches the UI.

So in whatever REPL (read-eval-print loop), if you then type ``die'',
then you get a FEP in the terminal you launched Factor from. A FEP is
basically the error shell you get when Factor has some kind of crash,
but in this case, we called it intentionally. So you can type ``help''
and get a list of options, but what we want is to find the machine
addresses for all the Factor words. So we type ``words'' and you see a
list of machine addresses associated with Factor words. Then you can
type ``c'' and continue execution, since we didn't really crash but
invoked the FEP on purpose.

Doug

On Fri, Aug 10, 2012 at 3:05 PM, Michael Clagett mclag...@hotmail.com wrote:
 Doug, thank you for your help, but I'm afraid I didn't understand everything
 in your response.  Not sure of the context of your instructions.   Not sure,
 for example, what you mean by ./factor (is this something I'm supposed to
 type somewhere?), what you mean by in the repl: die (not sure what the
 repl is -- or what die means for that matter), and then what you mean by
 the shell.  Other than that I understood you completely :) .

 Date: Fri, 10 Aug 2012 14:57:51 -0700
 From: doug.cole...@gmail.com

 To: factor-talk@lists.sourceforge.net
 Subject: Re: [Factor-talk] Any way of making sense of what's in the boot
 image?

 You can do this:

 ./factor
 in the repl: die
 then in the shell:
 words

 It dumps a list of word addresses in Factor.

 This works for words, but not quotations.

 Hope this helps.

 Doug

 On Fri, Aug 10, 2012 at 2:55 PM, Michael Clagett mclag...@hotmail.com
 wrote:
  One more question before I disappear. I've been tracing through the
  bootstrapping code with WinDbg and am currently in
  factor_vm::compile_all_words where a loop is about to compile 4894
  words.
  These are accessible as words, which in turn can server up their
  definitions
  (via word-def). These are quotations, which, like words, display in the
  debugger inspector as a fairly simple structure with a value and
  parent_slot. I'm wondering if by some small chance there is some way
  to
  navigate back to the symbolic name for any words that one comes across
  in
  this fashion. Certainly one could get away with compiling simply with
  the
  type and value and never need the symbolic name, which I suspect is what
  is
  being done. So I don't have high hopes, but it certainly doesn't hurt to
  ask.
 
  
  From: mclag...@hotmail.com
  To: factor-talk@lists.sourceforge.net
  Date: Fri, 10 Aug 2012 21:16:40 +
 
  Subject: Re: [Factor-talk] Any way of making sense of what's in the boot
  image?
 
  For anyone else who might happen onto the problem I had, the solution
  ended
  up being that my architecture was named windows-x86.32, not x86.32.
 
 
  
  From: mrj...@gmail.com
  Date: Fri, 10 Aug 2012 14:10:41 -0700
  To: factor-talk@lists.sourceforge.net
  Subject: Re: [Factor-talk] Any way of making sense of what's in the boot
  image?
 
  Write my-arch make-image in listener.
 
  Then type Ctrl-W to walk it.
 
  Step across my-arch
 
  Into into make-image
 
  Rinse, repeat. :)
 
 
  On Fri, Aug 10, 2012 at 2:08 PM, Michael Clagett mclag...@hotmail.com
  wrote:
 
  Quick question, if you're still on the horn. How do I trace into myarch
  make-image from the Listener. If I hit enter it just executes. I'm sure
  there must be any easy way to step into it, which I'm sure I can find by
  searching the documentation. But perhaps you could save me five minutes.
 
  
  From: mrj...@gmail.com
  Date: Fri, 10 Aug 2012 14:01:58 -0700
 
  To: factor-talk@lists.sourceforge.net
  Subject: Re: [Factor-talk] Any way of making sense of what's in the boot
  image?
 
  Typically the architecture is a combination of os and arch:
 
  IN: scratchpad my-arch .
  unix-x86.64
 
  You can use the my-arch word to make an image for your architecture:
 
  IN: scratchpad my-arch make-image
 
 
 
  On Fri, Aug 10, 2012 at 1:56 PM, Michael Clagett mclag...@hotmail.com
  wrote:
 
  Hi --
 
  I've been trying to run the make-image word from the Listener and got as
  far
  as this trace:
 
  IN: scratchpad Command: restart
  1: Note:
  Added bootstrap.image vocabulary to search path
  x86.32 make-image
  Loading resource:/core/bootstrap/stage1.factor
  Bootstrap stage 1...
  Loading vocab:bootstrap/primitives.factor
  Creating primitives and basic runtime structures...
  Loading vocab:bootstrap/syntax.factor
 
  From Traceback:
 
  Data Stack:
 
  [ ~quotation~ with-compilation-unit ]
  Bad architecture: x86.32
 
  Call Stack:
 
  (U)
  Quotation: [ set-namestack init-catchstack self quot call - stop ]
  (O)
  Word: 

Re: [Factor-talk] Any way of making sense of what's in the boot image?

2012-08-09 Thread Michael Clagett

Thank you, Joe, once again for your help.  I have settled into a nice rythym of 
virtually tracing through the code by looking at the source (both vm and factor 
files), augmented by the Help system in the listener.  That should keep me busy 
and out of your hair for a couple months (or couple years? :( ).  Let me hold 
off on asking any more questions until I've had a chance to absorb some of 
this. Maybe one little question.   Am I correct in suspecting that there is a 
high-level Factor word I can execute on demand and trace through the exectution 
of via the Factor debugger to get a more dynamic picture of how this all 
unfolds?  Would it be make-image?  Can you just call that directly or is it 
only called in the context of a sequence of operations that have already set 
other things up?
  Date: Wed, 8 Aug 2012 21:12:23 -0700
 From: arc...@gmail.com
 To: factor-talk@lists.sourceforge.net
 Subject: Re: [Factor-talk] Any way of making sense of what's in the boot  
 image?
 
 On Wed, Aug 8, 2012 at 8:23 PM, Joe Groff arc...@gmail.com wrote:
 
  The code in the bootstrap.image module outputs the bootstrap image as
  a binary blob. You can get a sense for the format of the bootstrap
  image and its contents by looking at that module.
 
 To clarify, by output as a binary blob I mean the code in
 bootstrap.image doesn't have any special help from the VM—it just
 generates a byte array whose contents resemble a Factor image and
 outputs that to a file. It could be transliterated to another language
 and still generate a valid boot image.
 
 -Joe
 
 --
 Live Security Virtual Conference
 Exclusive live event will cover all the ways today's security and 
 threat landscape has changed and how IT managers can respond. Discussions 
 will include endpoint security, mobile security and the latest in malware 
 threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
 ___
 Factor-talk mailing list
 Factor-talk@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/factor-talk
  --
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/___
Factor-talk mailing list
Factor-talk@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/factor-talk


Re: [Factor-talk] Any way of making sense of what's in the boot image?

2012-08-09 Thread Joe Groff
On Wed, Aug 8, 2012 at 9:56 PM, Michael Clagett mclag...@hotmail.com wrote:
 Hi Joe --

 Thank you so much for your guidance.  I'm assuming that it is the
 basis\bootstrap\image\image.factor and the core\bootstrap\primitives.factor,
 stage1.factor and syntax.factor that you are referring to?

 One question just to help me get oriented before I go into heavy
 head-twisting mode.  I notice that all these files have significant numbers
 of pre-existing vocabularies that they use.  If this is what is used to
 generate the early stage1 bootstrapping stuff, then am I correct to assume
 that this is done from some version of factor where all this stuff has built
 already from scratch (that would be the implication, if all these files are
 able to use those vocabularies)?  Or is there some other mechanism at work
 here that I should know about, and if so, is it written up anywhere that you
 know about.

 I have just read Slava's January 2010 post on the bootstrapping mechanism,
 so I understand the mechanism a bit better now, but am still thinking there
 has to be some Factor system somewhere that was built without a bootstrap
 image in order to have the vocabularies available that are used to generate
 the bootstrapping.  Is there anything anywhere documenting that aspect of
 the picture.  The reason I ask is that I would like to get a sense of how
 extensive that core fundamental set of vocabularies is that is needed to
 process the primitives and stage1 factor files.

 Here's the USING statement for primitives.factor:

 USING: alien alien.strings arrays byte-arrays generic hashtables
 hashtables.private io io.encodings.ascii kernel math
 math.private math.order namespaces make parser sequences strings
 vectors words quotations assocs layouts classes classes.private
 classes.builtin classes.singleton classes.tuple
 classes.tuple.private kernel.private vocabs vocabs.loader
 source-files definitions slots classes.union
 classes.intersection classes.predicate compiler.units
 bootstrap.image.private io.files accessors combinators ;
 IN: bootstrap.primitives

 It's got a lot of stuff there.  Is a lot of this built in the C++ code that
 constitutes the VM?  Or is some fundamental processing capability put into
 place that allows the processing of factor files to build these
 vocabularies?  And if so, is the factor source used also included in the
 downloaded platform?  Or was this a special primordial code base that was
 used once and never really needed again?

Although core/bootstrap/primitives.factor is in core/, it's not
actually loaded as-is into the boot image; it's really a script
designed to run as part of `make-image` in the host image. All of
those modules are loaded and run in the host image. While there of
course had to have been a primordial Factor that could boot itself, I
think it would be too different now to resemble current Factor.
Factor's bootstrapping loop evolved somewhat organically.

You can tell whether a word is a C++ primitive by `see`ing it in the
listener. Primitive words show up as `PRIMITIVE:` when prettyprinted.

At a high level, `make-image` has two stages: First, it executes
`core/bootstrap/stage1.factor`, which runs 'bootstrap/syntax.factor`
to transfer the basic syntax from the host image to the boot image,
`bootstrap/primitives.factor` to set up primitive words corresponding
to VM primitives, and a CPU-specific `basis/cpu/*/bootstrap.factor`
script to assemble sub-primitives which are blobs of assembly
language code composed by the VM's compiler. It also composes a
startup quotation to begin the second stage of bootstrap when the boot
image is started. Second, after the bootstrapping elements have been
loaded, it serializes the data structures loaded by the bootstrap
scripts into a boot image. Again, it does this without help from the
VM, though it does borrow some knowledge of layouts from the compiler
and other Factor libraries.

 P.S.   Incidentally, while I am on the subject, I find myself able to trace
 through the VM startup code in Visual Studio with no problem at all, until I
 get to the factor_vm::c_to_factor, which wraps a c-to-factor sub-primitive
 inside of a callback stub and then invokes that function.  On both a Windows
 7 platform and a Windows Server 2008 platform, my Visual Studio blows up
 when the callback address loaded into EDX is called.  Anybody ever
 encountered this and any idea how to get around it?

Factor code doesn't follow the C calling convention so it's unlikely
that a debugger will be able to walk a stack with Factor frames. In
recent versions of Factor you can trigger Factor's own low-level
debugger with ^C, which will let you backtrace and step through Factor
frames.

-Joe

--
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint 

Re: [Factor-talk] Any way of making sense of what's in the boot image?

2012-08-09 Thread Michael Clagett

Much appreciated, thanks.  I had actually already discovered some significant 
portion of what you explain below, which is why I'm going to hold off on the 
baby-step questions so that I can save the limited Joe Groff bandwidth that the 
universe is going to provide me for more meaty important stuff.
  Date: Thu, 9 Aug 2012 06:26:54 -0700
 From: arc...@gmail.com
 To: factor-talk@lists.sourceforge.net
 Subject: Re: [Factor-talk] Any way of making sense of what's in the boot  
 image?
 
 On Wed, Aug 8, 2012 at 9:56 PM, Michael Clagett mclag...@hotmail.com wrote:
  Hi Joe --
 
  Thank you so much for your guidance.  I'm assuming that it is the
  basis\bootstrap\image\image.factor and the core\bootstrap\primitives.factor,
  stage1.factor and syntax.factor that you are referring to?
 
  One question just to help me get oriented before I go into heavy
  head-twisting mode.  I notice that all these files have significant numbers
  of pre-existing vocabularies that they use.  If this is what is used to
  generate the early stage1 bootstrapping stuff, then am I correct to assume
  that this is done from some version of factor where all this stuff has built
  already from scratch (that would be the implication, if all these files are
  able to use those vocabularies)?  Or is there some other mechanism at work
  here that I should know about, and if so, is it written up anywhere that you
  know about.
 
  I have just read Slava's January 2010 post on the bootstrapping mechanism,
  so I understand the mechanism a bit better now, but am still thinking there
  has to be some Factor system somewhere that was built without a bootstrap
  image in order to have the vocabularies available that are used to generate
  the bootstrapping.  Is there anything anywhere documenting that aspect of
  the picture.  The reason I ask is that I would like to get a sense of how
  extensive that core fundamental set of vocabularies is that is needed to
  process the primitives and stage1 factor files.
 
  Here's the USING statement for primitives.factor:
 
  USING: alien alien.strings arrays byte-arrays generic hashtables
  hashtables.private io io.encodings.ascii kernel math
  math.private math.order namespaces make parser sequences strings
  vectors words quotations assocs layouts classes classes.private
  classes.builtin classes.singleton classes.tuple
  classes.tuple.private kernel.private vocabs vocabs.loader
  source-files definitions slots classes.union
  classes.intersection classes.predicate compiler.units
  bootstrap.image.private io.files accessors combinators ;
  IN: bootstrap.primitives
 
  It's got a lot of stuff there.  Is a lot of this built in the C++ code that
  constitutes the VM?  Or is some fundamental processing capability put into
  place that allows the processing of factor files to build these
  vocabularies?  And if so, is the factor source used also included in the
  downloaded platform?  Or was this a special primordial code base that was
  used once and never really needed again?
 
 Although core/bootstrap/primitives.factor is in core/, it's not
 actually loaded as-is into the boot image; it's really a script
 designed to run as part of `make-image` in the host image. All of
 those modules are loaded and run in the host image. While there of
 course had to have been a primordial Factor that could boot itself, I
 think it would be too different now to resemble current Factor.
 Factor's bootstrapping loop evolved somewhat organically.
 
 You can tell whether a word is a C++ primitive by `see`ing it in the
 listener. Primitive words show up as `PRIMITIVE:` when prettyprinted.
 
 At a high level, `make-image` has two stages: First, it executes
 `core/bootstrap/stage1.factor`, which runs 'bootstrap/syntax.factor`
 to transfer the basic syntax from the host image to the boot image,
 `bootstrap/primitives.factor` to set up primitive words corresponding
 to VM primitives, and a CPU-specific `basis/cpu/*/bootstrap.factor`
 script to assemble sub-primitives which are blobs of assembly
 language code composed by the VM's compiler. It also composes a
 startup quotation to begin the second stage of bootstrap when the boot
 image is started. Second, after the bootstrapping elements have been
 loaded, it serializes the data structures loaded by the bootstrap
 scripts into a boot image. Again, it does this without help from the
 VM, though it does borrow some knowledge of layouts from the compiler
 and other Factor libraries.
 
  P.S.   Incidentally, while I am on the subject, I find myself able to trace
  through the VM startup code in Visual Studio with no problem at all, until I
  get to the factor_vm::c_to_factor, which wraps a c-to-factor sub-primitive
  inside of a callback stub and then invokes that function.  On both a Windows
  7 platform and a Windows Server 2008 platform, my Visual Studio blows up
  when the callback address loaded into EDX is called.  Anybody ever
  encountered this and any idea how to get 

Re: [Factor-talk] Any way of making sense of what's in the boot image?

2012-08-09 Thread Michael Clagett

Quick question about parse-file.Is the quotation that is returned on the 
stack as a result of this word a parse tree, as discussed in the 
documentation's article on parsing?  This would be a parse tree as in Tokens 
are appended to the parse tree, the top level of which is a quotation returned 
by the original parser invocation., right?  There could also potentially be 
nested elements in the tree contributed by other parse words encountered in the 
course of satisfying the original parser invocation.   Am I understanding this 
correctly? Thanks. --
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/___
Factor-talk mailing list
Factor-talk@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/factor-talk


Re: [Factor-talk] Any way of making sense of what's in the boot image?

2012-08-08 Thread Joe Groff
On Wed, Aug 8, 2012 at 3:24 PM, Michael Clagett mclag...@hotmail.com wrote:
 Hi --

 I've been tracing through the initial vm initialization code trying to get a
 picture of how Factor bootstraps itself.  Does anyone know if there is a way
 to resolve code in the initial boot image that is being jit-compiled by
 factor_vm::prepare_boot_image to a set of symbolic names that can give a
 hint as to what functionality is included there?  I'm trying to get a sense
 of the minimal functional set included here that allows higher-level initial
 code to be compiled.  The comment on prepare_boot-image says /* Compile
 code in boot image so that we can execute the startup quotation */.  It
 would be nice to know what this code includes.  My guess is that the answer
 is no, there is no way and that one just has to be in possession of
 whatever code generated it (and there's nothing to say that this was even a
 Factor system that did this in the first place; could have easily been some
 C++ code that just knew what bits to emit).

 But it never hurts to ask...

 Presumably if I proceed past this to a point where actual Factor code is
 being parsed and compiled, I'll be able to get a feel for what primitives
 are already being depended on?  Or maybe not.  Maybe it's just a big bang
 where earlier word definitions can depend on later word definitions having
 been initialized before they start their execution.  Is mine a hopeless
 effort?  Would be nice to know before I suck up too much time with it.

 Thanks for any guidance anyone can provide.

 Regards,

 Mike

The code in the bootstrap.image module outputs the bootstrap image as
a binary blob. You can get a sense for the format of the bootstrap
image and its contents by looking at that module.

-Joe

--
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
___
Factor-talk mailing list
Factor-talk@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/factor-talk


Re: [Factor-talk] Any way of making sense of what's in the boot image?

2012-08-08 Thread Joe Groff
On Wed, Aug 8, 2012 at 8:23 PM, Joe Groff arc...@gmail.com wrote:

 The code in the bootstrap.image module outputs the bootstrap image as
 a binary blob. You can get a sense for the format of the bootstrap
 image and its contents by looking at that module.

To clarify, by output as a binary blob I mean the code in
bootstrap.image doesn't have any special help from the VM—it just
generates a byte array whose contents resemble a Factor image and
outputs that to a file. It could be transliterated to another language
and still generate a valid boot image.

-Joe

--
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
___
Factor-talk mailing list
Factor-talk@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/factor-talk


Re: [Factor-talk] Any way of making sense of what's in the boot image?

2012-08-08 Thread Michael Clagett

Hi Joe -- Thank you so much for your guidance.  I'm assuming that it is the 
basis\bootstrap\image\image.factor and the core\bootstrap\primitives.factor, 
stage1.factor and syntax.factor that you are referring to? One question just to 
help me get oriented before I go into heavy head-twisting mode.  I notice that 
all these files have significant numbers of pre-existing vocabularies that they 
use.  If this is what is used to generate the early stage1 bootstrapping stuff, 
then am I correct to assume that this is done from some version of factor where 
all this stuff has built already from scratch (that would be the implication, 
if all these files are able to use those vocabularies)?  Or is there some other 
mechanism at work here that I should know about, and if so, is it written up 
anywhere that you know about. I have just read Slava's January 2010 post on the 
bootstrapping mechanism, so I understand the mechanism a bit better now, but am 
still thinking there has to be some Factor system somewhere that was built 
without a bootstrap image in order to have the vocabularies available that are 
used to generate the bootstrapping.  Is there anything anywhere documenting 
that aspect of the picture.  The reason I ask is that I would like to get a 
sense of how extensive that core fundamental set of vocabularies is that is 
needed to process the primitives and stage1 factor files.   Here's the USING 
statement for primitives.factor: USING: alien alien.strings arrays byte-arrays 
generic hashtables
hashtables.private io io.encodings.ascii kernel math
math.private math.order namespaces make parser sequences strings
vectors words quotations assocs layouts classes classes.private
classes.builtin classes.singleton classes.tuple
classes.tuple.private kernel.private vocabs vocabs.loader
source-files definitions slots classes.union
classes.intersection classes.predicate compiler.units
bootstrap.image.private io.files accessors combinators ;
IN: bootstrap.primitives It's got a lot of stuff there.  Is a lot of this built 
in the C++ code that constitutes the VM?  Or is some fundamental processing 
capability put into place that allows the processing of factor files to build 
these vocabularies?  And if so, is the factor source used also included in the 
downloaded platform?  Or was this a special primordial code base that was used 
once and never really needed again? Any clarification you can provide (or 
better yet, any sources you can point me to that I can go and do the work to 
gain an understanding of this) would be greatly, greatly appreciated. I 
envision creating my own Inside the Factor VM and possibly inside the Factor 
Compiler writeup once I have accomplished what I am after.  So hopefully I can 
give back a little after traveling up these respective learning curves. Thanks 
much. Mike  P.S.   Incidentally, while I am on the subject, I find myself able 
to trace through the VM startup code in Visual Studio with no problem at all, 
until I get to the factor_vm::c_to_factor, which wraps a c-to-factor 
sub-primitive inside of a callback stub and then invokes that function.  On 
both a Windows 7 platform and a Windows Server 2008 platform, my Visual Studio 
blows up when the callback address loaded into EDX is called.  Anybody ever 
encountered this and any idea how to get around it? Thanks. Date: Wed, 8 Aug 
2012 20:23:04 -0700
 From: arc...@gmail.com
 To: factor-talk@lists.sourceforge.net
 Subject: Re: [Factor-talk] Any way of making sense of what's in the boot  
 image?
 
 On Wed, Aug 8, 2012 at 3:24 PM, Michael Clagett mclag...@hotmail.com wrote:
  Hi --
 
  I've been tracing through the initial vm initialization code trying to get a
  picture of how Factor bootstraps itself.  Does anyone know if there is a way
  to resolve code in the initial boot image that is being jit-compiled by
  factor_vm::prepare_boot_image to a set of symbolic names that can give a
  hint as to what functionality is included there?  I'm trying to get a sense
  of the minimal functional set included here that allows higher-level initial
  code to be compiled.  The comment on prepare_boot-image says /* Compile
  code in boot image so that we can execute the startup quotation */.  It
  would be nice to know what this code includes.  My guess is that the answer
  is no, there is no way and that one just has to be in possession of
  whatever code generated it (and there's nothing to say that this was even a
  Factor system that did this in the first place; could have easily been some
  C++ code that just knew what bits to emit).
 
  But it never hurts to ask...
 
  Presumably if I proceed past this to a point where actual Factor code is
  being parsed and compiled, I'll be able to get a feel for what primitives
  are already being depended on?  Or maybe not.  Maybe it's just a big bang
  where earlier word definitions can depend on later word definitions having
  been initialized before they start their execution.  Is mine a