From mboxrd@z Thu Jan 1 00:00:00 1970 From: Robert de Bath Subject: Re: bcc question Date: Tue, 28 May 2002 20:14:52 +0100 (BST) Sender: linux-8086-owner@vger.kernel.org Message-ID: <83142d34a58c4005@mayday.cix.co.uk> References: Mime-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="-1463811840-30756098-1022396516=:11965" Return-path: In-Reply-To: Content-ID: List-Id: To: Ken Martwick Cc: Linux 8086 This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. Send mail to mime@docserver.cac.washington.edu for more info. ---1463811840-30756098-1022396516=:11965 Content-Type: TEXT/PLAIN; CHARSET=US-ASCII Content-ID: On Sat, 25 May 2002, Ken Martwick wrote: > How does one write inline assembly code in "bcc" to move > a register value to a "C" variable? The following code > is acceptable to "bcc", but "ld86" fails with something > about undefined variables. I couldn't find any examples. Because until recently it didn't work with local variables. For the most recent version I've found a way of fixing the old bug where mixed C & assembler may get out of sequence and added some more 'magic' symbols for frame pointer offsets to the local variables (as opposed to the existing stack pointer relative offsets). The general method is something like this: void mem_check() { /* Try int $15 EAX=$E801 */ { unsigned int mem_64, mem_16; /* For int $15,AX=$E801 */ #asm mov ax,#$E801 int $15 jc no_e801 mov .mem_check.mem_16[bp],ax mov .mem_check.mem_64[bp],bx #endasm main_mem_top = ((unsigned long)mem_64<<6) + mem_16; #asm no_e801: #endasm } } I've attached the whole function which has a couple of other bits too. -- Rob. (Robert de Bath ) ---1463811840-30756098-1022396516=:11965 Content-Type: TEXT/X-C-SOURCE; NAME="mem_check.c" Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: ATTACHMENT; FILENAME="mem_check.c" dm9pZCBtZW1fY2hlY2soKQ0Kew0KI2lmbmRlZiBfX1NUQU5EQUxPTkVfXw0K ICAgbWFpbl9tZW1fdG9wID0gMTYzODQ7DQogICByZXR1cm47CS8qIElmIG5v dCBzdGFuZGFsb25lIGRvbid0IHRyeSAqLw0KI2Vsc2UNCiNhc20NCiAgaW50 CTB4MTIJCSEgQW1vdW50IG9mIGJvb3QgbWVtb3J5DQogIG1vdgljbCwjNg0K ICBzYWwJYXgsY2wJCSEgSW4gc2VnbWVudHMNCiAgbW92CVtfYm9vdF9tZW1f dG9wXSxheA0KDQoJCQkhIE5leHQgY2hlY2sgZm9yIGV4dGVuZGVkIA0KICBt b3YJYWwsW194ODZdIAkhIElmIHdlIGFpbid0IGdvdCBhIDI4Nisgd2UgY2Fu J3QgYWNjZXNzIGl0IGFueXdheQ0KICBjbXAJYWwsIzINCiAgamwgIAlpc194 dA0KDQogIG1vdglhaCwjMHg4OAkhDQogIGludAkweDE1DQogIGpuYwlnb3Rf ZXh0CQkhIEVycm9yIT8gVGhpcyBzaG91bGQgX25vdF8gaGFwcGVuIC4uLiBi dXQgLi4uDQppc194dDoNCiAgeG9yCWF4LGF4DQpnb3RfZXh0Og0KICBtb3YJ d29yZCBwdHIgW19tYWluX21lbV90b3ArMl0sIzANCiAgbW92CVtfbWFpbl9t ZW1fdG9wXSxheA0KDQojZW5kYXNtDQoNCiAgIC8qIFJlc3QgYXJlIGJpZyBt ZW1vcnkgZm9yIDgwMzg2KyAqLw0KICAgaWYoIHg4NiA8IDMgKSByZXR1cm47 DQoNCiAgIC8qIFRyeSBpbnQgJDE1IEVBWD0kRTgyMCAqLw0KICAgew0KICAg ICAgc3RydWN0IGU4MjBfZGF0IHsNCgkgdW5zaWduZWQgbG9uZyBiYXNlX2xv LCBiYXNlX2hpOw0KCSB1bnNpZ25lZCBsb25nIGxlbl9sbywgbGVuX2hpOw0K CSBsb25nIGFkZHJfdHlwZTsNCiAgICAgIH0gZTgyMF9pdGVtOw0KICAgICAg bG9uZyBlcG9sbCA9IDA7DQoNCiAgICAgIGRvDQogICAgICB7DQoJIGU4MjBf aXRlbS5hZGRyX3R5cGUgPSAwOw0KI2FzbQ0KCSBtb3YgZWF4LCMkRTgyMA0K CSBtb3YgZWJ4LC5tZW1fY2hlY2suZXBvbGxbYnBdDQoJIG1vdiBlY3gsIzIw DQoJIG1vdiBlZHgsIyQ1MzRENDE1MA0KCSBwdXNoIGRzDQoJIHBvcCBlcw0K CSBsZWEgZGksLm1lbV9jaGVjay5lODIwX2l0ZW1bYnBdDQoJIGludCAkMTUN Cgkgam5jIGdvdF9lODIwDQoJIHhvciBlYngsZWJ4DQpnb3RfZTgyMDoNCgkg bW92IC5tZW1fY2hlY2suZXBvbGxbYnBdLGVieA0KI2VuZGFzbQ0KCSBpZiAo ZTgyMF9pdGVtLmFkZHJfdHlwZSA9PSAxDQoJICAgICAgICYmIGU4MjBfaXRl bS5iYXNlX2hpID09IDANCgkgICAgICAgJiYgZTgyMF9pdGVtLmJhc2VfbG8g PT0gMHgxMDAwMDBMKQ0KCSB7DQoJICAgIC8qIFhYWCBMYXRlciAuLi4gKi8N CgkgICAgaWYgKGU4MjBfaXRlbS5sZW5faGkpIG1haW5fbWVtX3RvcCA9IDB4 NDAwMDA7DQoJICAgIGVsc2UNCgkgICAgICAgbWFpbl9tZW1fdG9wID0gKGU4 MjBfaXRlbS5sZW5fbG8gPj4gMTApOw0KCSAgICByZXR1cm47DQoJIH0NCiAg ICAgIH0NCiAgICAgIHdoaWxlKGVwb2xsKTsNCiAgIH0NCg0KICAgLyogVHJ5 IGludCAkMTUgRUFYPSRFODAxICovDQogICB7DQogICAgICB1bnNpZ25lZCBp bnQgbWVtXzY0LCBtZW1fMTY7CS8qIEZvciBpbnQgJDE1LEFYPSRFODAxICov DQojYXNtDQogICAgICBtb3YgYXgsIyRFODAxDQogICAgICBpbnQgJDE1DQog ICAgICBqYyAgbm9fZTgwMQ0KICAgICAgbW92IC5tZW1fY2hlY2subWVtXzE2 W2JwXSxheA0KICAgICAgbW92IC5tZW1fY2hlY2subWVtXzY0W2JwXSxieA0K I2VuZGFzbQ0KICAgICAgbWFpbl9tZW1fdG9wID0gKCh1bnNpZ25lZCBsb25n KW1lbV82NDw8NikgKyBtZW1fMTY7DQojYXNtDQpub19lODAxOg0KI2VuZGFz bQ0KICAgfQ0KDQojZW5kaWYNCn0NCg== ---1463811840-30756098-1022396516=:11965--