elf.mes: remove text-free, softcode data-offset.
This commit is contained in:
parent
30076e1b2b
commit
24291da28e
|
@ -135,5 +135,5 @@ hello: hello.o
|
||||||
# ld -A i386 -m elf_i386 -A i386 -o $@ $^
|
# ld -A i386 -m elf_i386 -A i386 -o $@ $^
|
||||||
|
|
||||||
a.out: elf.mes GNUmakefile
|
a.out: elf.mes GNUmakefile
|
||||||
cat base0.mes base0-$(CONDIF).mes base.mes quasiquote.mes let.mes scm scm.mes lib/rnrs/bytevectors.scm elf.mes | ./mes > a.out
|
cat base0.mes base0-$(CONDIF).mes base.mes quasiquote.mes let.mes scm.mes lib/rnrs/bytevectors.scm elf.mes | ./mes > a.out
|
||||||
chmod +x a.out
|
chmod +x a.out
|
||||||
|
|
67
elf.mes
67
elf.mes
|
@ -103,9 +103,6 @@
|
||||||
(define (text-offset)
|
(define (text-offset)
|
||||||
(length (headers)))
|
(length (headers)))
|
||||||
|
|
||||||
(define data-offset #x1076)
|
|
||||||
(define data-address (+ data-offset vaddress))
|
|
||||||
|
|
||||||
(define (i386:puts data)
|
(define (i386:puts data)
|
||||||
`(
|
`(
|
||||||
#xba #x0e #x00 #x00 #x00 ;; mov $0xe,%edx
|
#xba #x0e #x00 #x00 #x00 ;; mov $0xe,%edx
|
||||||
|
@ -122,19 +119,25 @@
|
||||||
#xcd #x80 ;; int $0x80
|
#xcd #x80 ;; int $0x80
|
||||||
))
|
))
|
||||||
|
|
||||||
(define text
|
(define (text data)
|
||||||
(append
|
(append
|
||||||
(i386:puts data-address)
|
(i386:puts data)
|
||||||
(i386:exit 0)
|
(i386:exit 0)
|
||||||
))
|
))
|
||||||
|
|
||||||
(define text-free
|
(define (text-length)
|
||||||
(vector->list (make-vector (- data-offset (length text) (text-offset)) #x00)))
|
(length (text 0)))
|
||||||
|
|
||||||
(define program-length
|
(define (data-offset)
|
||||||
(+ (length text) (length text-free)))
|
(length
|
||||||
(set! p-filesz (int->bv32 program-length))
|
(append
|
||||||
(set! p-memsz (int->bv32 program-length))
|
(headers)
|
||||||
|
(text 0))))
|
||||||
|
|
||||||
|
(define (data-address) (+ (data-offset) vaddress))
|
||||||
|
|
||||||
|
(set! p-filesz (int->bv32 (text-length)))
|
||||||
|
(set! p-memsz (int->bv32 (text-length)))
|
||||||
|
|
||||||
;; 1076
|
;; 1076
|
||||||
(define data
|
(define data
|
||||||
|
@ -143,8 +146,10 @@
|
||||||
(define note
|
(define note
|
||||||
(string->list
|
(string->list
|
||||||
(string-append
|
(string-append
|
||||||
"Mes -- Maxwell Equations of Software\n"
|
"MES"
|
||||||
"https://gitlab.com/janneke/mes")
|
;;"Mes -- Maxwell Equations of Software\n"
|
||||||
|
;;"https://gitlab.com/janneke/mes"
|
||||||
|
)
|
||||||
;; #x05 #x00 #x00 #x00 #x00 #x00 #x00 #x00 #x02 #x00 #x00 #x00
|
;; #x05 #x00 #x00 #x00 #x00 #x00 #x00 #x00 #x02 #x00 #x00 #x00
|
||||||
;; #\i #\3 #\8 #\6 #x00 #x00 #x00 #x00
|
;; #\i #\3 #\8 #\6 #x00 #x00 #x00 #x00
|
||||||
))
|
))
|
||||||
|
@ -190,15 +195,13 @@
|
||||||
(define sh-text-name '(#x0b #x00 #x00 #x00))
|
(define sh-text-name '(#x0b #x00 #x00 #x00))
|
||||||
(define sh-text-type '(#x01 #x00 #x00 #x00))
|
(define sh-text-type '(#x01 #x00 #x00 #x00))
|
||||||
(define sh-text-flags '(#x06 #x00 #x00 #x00))
|
(define sh-text-flags '(#x06 #x00 #x00 #x00))
|
||||||
;;(define sh-text-addr '(#x54 #x80 #x04 #x08))
|
|
||||||
(define sh-text-addr (int->bv32 (+ vaddress (text-offset))))
|
(define sh-text-addr (int->bv32 (+ vaddress (text-offset))))
|
||||||
(set! e-entry sh-text-addr)
|
(set! e-entry sh-text-addr)
|
||||||
(set! p-vaddr sh-text-addr)
|
(set! p-vaddr sh-text-addr)
|
||||||
(set! p-paddr sh-text-addr)
|
(set! p-paddr sh-text-addr)
|
||||||
;;(define sh-text-offset '(#x54 #x00 #x00 #x00))
|
|
||||||
(define sh-text-offset (int->bv32 (text-offset)))
|
(define sh-text-offset (int->bv32 (text-offset)))
|
||||||
(set! p-offset sh-text-offset)
|
(set! p-offset sh-text-offset)
|
||||||
(define sh-text-size '(#x22 #x00 #x00 #x00))
|
(define sh-text-size (int->bv32 (length text)))
|
||||||
(define sh-text-link '(#x00 #x00 #x00 #x00))
|
(define sh-text-link '(#x00 #x00 #x00 #x00))
|
||||||
(define sh-text-info '(#x00 #x00 #x00 #x00))
|
(define sh-text-info '(#x00 #x00 #x00 #x00))
|
||||||
(define sh-text-addralign '(#x01 #x00 #x00 #x00))
|
(define sh-text-addralign '(#x01 #x00 #x00 #x00))
|
||||||
|
@ -222,11 +225,8 @@
|
||||||
(define sh-data-name '(#x11 #x00 #x00 #x00))
|
(define sh-data-name '(#x11 #x00 #x00 #x00))
|
||||||
(define sh-data-type '(#x01 #x00 #x00 #x00))
|
(define sh-data-type '(#x01 #x00 #x00 #x00))
|
||||||
(define sh-data-flags '(#x03 #x00 #x00 #x00))
|
(define sh-data-flags '(#x03 #x00 #x00 #x00))
|
||||||
;;(define sh-data-addr '(#x76 #x90 #x04 #x08))
|
(define sh-data-addr (int->bv32 (data-address)))
|
||||||
(define sh-data-addr (int->bv32 data-address))
|
(define sh-data-offset (int->bv32 (data-offset)))
|
||||||
;;(define sh-data-offset '(#x76 #x10 #x00 #x00))
|
|
||||||
(define sh-data-offset (int->bv32 data-offset))
|
|
||||||
;;(define sh-data-size '(#x0e #x00 #x00 #x00))
|
|
||||||
(define sh-data-size (int->bv32 (length data)))
|
(define sh-data-size (int->bv32 (length data)))
|
||||||
(define sh-data-link '(#x00 #x00 #x00 #x00))
|
(define sh-data-link '(#x00 #x00 #x00 #x00))
|
||||||
(define sh-data-info '(#x00 #x00 #x00 #x00))
|
(define sh-data-info '(#x00 #x00 #x00 #x00))
|
||||||
|
@ -252,11 +252,8 @@
|
||||||
(define sh-note-type '(#x07 #x00 #x00 #x00))
|
(define sh-note-type '(#x07 #x00 #x00 #x00))
|
||||||
(define sh-note-flags '(#x00 #x00 #x00 #x00))
|
(define sh-note-flags '(#x00 #x00 #x00 #x00))
|
||||||
(define sh-note-addr '(#x00 #x00 #x00 #x00))
|
(define sh-note-addr '(#x00 #x00 #x00 #x00))
|
||||||
;;(define sh-note-offset '(#x84 #x10 #x00 #x00))
|
|
||||||
(define sh-note-offset '(0 0 0 0))
|
(define sh-note-offset '(0 0 0 0))
|
||||||
(define (note-offset) 0)
|
(define sh-note-size (int->bv32 (length note)))
|
||||||
;;(define sh-note-offset (int->bv32 (note-offset)))
|
|
||||||
(define sh-note-size '(#x14 #x00 #x00 #x00))
|
|
||||||
(define sh-note-link '(#x00 #x00 #x00 #x00))
|
(define sh-note-link '(#x00 #x00 #x00 #x00))
|
||||||
(define sh-note-info '(#x00 #x00 #x00 #x00))
|
(define sh-note-info '(#x00 #x00 #x00 #x00))
|
||||||
(define sh-note-addralign '(#x01 #x00 #x00 #x00))
|
(define sh-note-addralign '(#x01 #x00 #x00 #x00))
|
||||||
|
@ -281,10 +278,8 @@
|
||||||
(define sh-tab-type '(#x03 #x00 #x00 #x00))
|
(define sh-tab-type '(#x03 #x00 #x00 #x00))
|
||||||
(define sh-tab-flags '(#x00 #x00 #x00 #x00))
|
(define sh-tab-flags '(#x00 #x00 #x00 #x00))
|
||||||
(define sh-tab-addr '(#x00 #x00 #x00 #x00))
|
(define sh-tab-addr '(#x00 #x00 #x00 #x00))
|
||||||
;;(define sh-tab-offset '(#x98 #x10 #x00 #x00))
|
|
||||||
(define sh-tab-offset '(0 0 0 0))
|
(define sh-tab-offset '(0 0 0 0))
|
||||||
;;(define sh-tab-offset (int->bv32 (tab-offset)))
|
(define sh-tab-size (int->bv32 (length tab)))
|
||||||
(define sh-tab-size '(#x1d #x00 #x00 #x00))
|
|
||||||
(define sh-tab-link '(#x00 #x00 #x00 #x00))
|
(define sh-tab-link '(#x00 #x00 #x00 #x00))
|
||||||
(define sh-tab-info '(#x00 #x00 #x00 #x00))
|
(define sh-tab-info '(#x00 #x00 #x00 #x00))
|
||||||
(define sh-tab-addralign '(#x01 #x00 #x00 #x00))
|
(define sh-tab-addralign '(#x01 #x00 #x00 #x00))
|
||||||
|
@ -317,8 +312,7 @@
|
||||||
(length
|
(length
|
||||||
(append
|
(append
|
||||||
(headers)
|
(headers)
|
||||||
text
|
(text 0)
|
||||||
text-free
|
|
||||||
data
|
data
|
||||||
)))
|
)))
|
||||||
|
|
||||||
|
@ -328,8 +322,7 @@
|
||||||
(length
|
(length
|
||||||
(append
|
(append
|
||||||
(headers)
|
(headers)
|
||||||
text
|
(text 0)
|
||||||
text-free
|
|
||||||
data
|
data
|
||||||
note
|
note
|
||||||
)))
|
)))
|
||||||
|
@ -340,8 +333,7 @@
|
||||||
(length
|
(length
|
||||||
(append
|
(append
|
||||||
(headers)
|
(headers)
|
||||||
text
|
(text 0)
|
||||||
text-free
|
|
||||||
data
|
data
|
||||||
note
|
note
|
||||||
tab)))
|
tab)))
|
||||||
|
@ -351,15 +343,10 @@
|
||||||
(define exe
|
(define exe
|
||||||
(append
|
(append
|
||||||
(headers)
|
(headers)
|
||||||
text
|
(text (data-address))
|
||||||
text-free
|
|
||||||
;;1076 (+ 0804 8000): 0804 9076
|
|
||||||
data
|
data
|
||||||
;;1084
|
|
||||||
note
|
note
|
||||||
;;1098
|
|
||||||
tab
|
tab
|
||||||
;;10b8
|
|
||||||
(section-headers)
|
(section-headers)
|
||||||
))
|
))
|
||||||
(map write-char exe)
|
(map write-char exe)
|
||||||
|
|
Loading…
Reference in a new issue