Created
September 3, 2014 13:49
-
-
Save kiyoka/352442916c41ed82f7ea to your computer and use it in GitHub Desktop.
Translate to Elisp from LLVM-IR code
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
;; loop1.el | |
;; --- library | |
(defun icmp-slt(a b) | |
(< a b)) | |
;; --- target program | |
(defun %main() | |
;; %1 | |
;; %total | |
;; %i | |
(let | |
((current 'label-0)) | |
(while (not (eq current 'end)) | |
(cond | |
((eq current 'label-0) | |
;;(message "label 0") | |
(setq %1* 0) | |
(setq %total* 0) | |
(setq %i* 0) | |
(setq current 'label-2)) | |
((eq current 'label-2) | |
;;(message "<label>:2") | |
(setq %3 %i*) | |
(setq %4 (icmp-slt %3 1000000)) | |
(when %4 (setq current 'label-5)) ;; label 5 | |
(when (not %4) (setq current 'label-13)) ;; lable 13 | |
) | |
((eq current 'label-5) | |
;;(message "<label>:5") | |
(setq %6 %i*) | |
(setq %7 (+ %6 1)) | |
(setq %8 %total*) | |
(setq %9 (+ %8 %7)) | |
(setq %total* %9) | |
(setq current 'label-10)) | |
((eq current 'label-10) | |
;;(message "<label>:10") | |
(setq %11 %i*) | |
(setq %12 (+ %11 1)) | |
(setq %i* %12) | |
(setq current 'label-2)) | |
((eq current 'label-13) | |
;;(message "<label>:13") | |
(setq %14 %total*) | |
(message (format "total = %d" %14)) | |
(setq %return 0) | |
(setq current 'end)) ;; END | |
)))) | |
(%main) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
;; loop2.el | |
;; --- library | |
(defun icmp-slt(a b) | |
(< a b)) | |
;; --- target program | |
(defun %main() | |
;; %1 | |
;; %total | |
;; %i | |
(let | |
((current 'label-0)) | |
(while (not (eq current 'end)) | |
(cond | |
((eq current 'label-0) | |
;;(message "label 0") | |
(setq %1* 0) | |
(setq %total* 0) | |
(setq %i* 0) | |
(setq current 'label-2)) | |
((eq current 'label-2) | |
;;(message "<label>:2") | |
(setq %3 %i*) | |
(setq %4 (icmp-slt %3 1000000)) | |
(when %4 (setq current 'label-5)) ;; label 5 | |
(when (not %4) (setq current 'label-13)) ;; lable 13 | |
) | |
((eq current 'label-5) | |
;;(message "<label>:5") | |
(setq %total* (+ (+ %i* 1) %total*)) | |
(setq current 'label-10)) | |
((eq current 'label-10) | |
;;(message "<label>:10") | |
(setq %i* (+ %i* 1)) | |
(setq current 'label-2)) | |
((eq current 'label-13) | |
;;(message "<label>:13") | |
(setq %14 %total*) | |
(message (format "total = %d" %14)) | |
(setq %return 0) | |
(setq current 'end)) ;; END | |
)))) | |
(%main) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment